2013-05-06 4 views
2

Что вы можете следовать за мной, это лучшее, что вы создать небольшое приложение, содержащее следующий код:Выберите текст из TextBox в Click случае

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 Используется метод работы и выбирается первая позиция текста. Проблема в том, что выбрано первое нажатие. Просто на короткое время, но все еще довольно раздражает.

Я уже пробовал this.SuspendLayout() в событии GotFocus Событие (потому что это увольняется до щелчка) и this.ResumeLayout() в событии Click, но никакого успеха.

У вас есть идея?

+0

Попробуйте использовать свой собственный класс, который получен из TextBox. Затем переопределите OnClick и сделайте то, что хотите. Если вы это сделаете, то поведение по умолчанию OnClick не произойдет. – Mike

+0

Возможный дубликат [Автоматически выбирать весь текст в фокусе в WinForms TextBox] (http://stackoverflow.com/questions/97459/automatically-select-all-text-on-focus-in-winforms-textbox) –

+0

@MichaelPerrenoud I не хотите выбирать весь текст. Прочтите еще раз. – Andy

ответ

0

спасибо Mike.

Я понял это через создание класса, производный от TextBox и наиважнейшей OnMouseDown:

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

    base.OnMouseDown(e); 
} 

теперь работает отлично!

+1

Подождите, не должно быть "Select (0, 0)"? – KappaG3

+1

@ KappaG3 Конечно, вы правы. Набрал это правильно в коде, но здесь неправильно. Спасибо, что рассказали! – Andy

Смежные вопросы