怪事,文本框的enter事件中 selectall()无效,加上一句 messagebox.show就起作用        private void txtuser_Enter(object sender, EventArgs e)
        {
            MessageBox.Show("ddd");     //去除这行就不起作用了
            txtuser.SelectAll();
        }真是非常怪,我想实现,一个文本框获得焦点时,就选中所有文字,
但是在 enter事件中,只有一句 .selectal() 并不起作用。
我在前面加一句 messagebox.show();
则起作用了,这是为什么呢?

解决方案 »

  1.   

    txtuser.Focus();
    txtuser.SelectAll();
      

  2.   

    txtuser.SelectionStart=0;
    txtuser.SelectionLength=txtuser.text.Length
      

  3.   

    没有问题的哦,放在MouseEnter事件里,或其他都行的
      

  4.   

    因为你是用鼠标点进去的,所以SelectAll执行后,立即执行了对鼠标点击位置的Select.
    建议放弃这样想法,想实现也不是完全不可以,不过界面就不怎么太友好了.实现方式如下:处理Enter,MouseClick,Leave三个事件 private void textBox1_Enter(object sender, EventArgs e)
            {
                this.textBox1.SelectAll();
            }        private void textBox1_MouseClick(object sender, MouseEventArgs e)
            {
                if (this.textBox1.Tag==null)
                {
                    this.textBox1.SelectAll();
                    this.textBox1.Tag = 0;
                }
            }        private void textBox1_Leave(object sender, EventArgs e)
            {
                this.textBox1.Tag = null;
            }
      

  5.   

    我试过了,将Enter事件绑定如下
    private void textBox1_Enter(object sender, EventArgs e)
            {
                textBox1.SelectAll();
            }是可以的,在界面上按TAB键将焦点移到该文本框是能正确执行的