2013-05-06 112 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