2013-05-06 74 views
2

,你可以跟着我,这是最好的,你创建一个包含下面的代码的小型应用程序:选择文本

public Form1() 
{ 
    InitializeComponent(); 

    textBox1.Text = "Any Text"; 
    textBox1.Click += delegate 
          { 
           textBox1.Select(0, 0); 
          }; 
} 

private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) 
{ 
    linkLabel1.Focus(); 
} 

linkLabel1只有那里,你可以从textBox1离开焦点。

现在,只需点击textBox即可。 Select方法起作用,文本的第一个位置被选中。 问题是,首先点击位置被选中。只是很短的时间,但仍然非常讨厌。

我已经在Click事件中尝试this.SuspendLayout()中的GotFocus事件(因为它被点击前)和this.ResumeLayout(),但没有成功。

你有什么想法吗?

+0

尝试使用从TextBox派生的自己的类。然后重写OnClick并做你想做的事。如果你这样做,那么默认的OnClick行为将不会发生。 – Mike 2013-05-06 14:11:29

+0

可能重复[自动选择焦点在WinForms文本框中的所有文本](http://stackoverflow.com/questions/97459/automatically-select-all-text-on-focus-in-winforms-textbox) – 2013-05-06 14:13:10

+0

@MichaelPerrenoud I不想选择全部文本。再读一遍。 – Andy 2013-05-06 14:17:38

回答

0

非常感谢你迈克

我想通了,通过从TextBox和压倒一切的OnMouseDown创建一个类派生:

protected override void OnMouseDown(MouseEventArgs e) 
{ 
    this.Select(0, 0); 

    base.OnMouseDown(e); 
} 

现在的作品完美!

+1

等待,不应该是“选择(0,0)”? – KappaG3 2013-07-30 08:07:03

+1

@ KappaG3当然,你是对的。在代码中键入它是正确的,但在这里是错的。感谢您告诉! – Andy 2013-07-30 08:25:03