Как объявить обработчик событий KeyPress общим способом для всех текстовых полей? - PullRequest
0 голосов
/ 23 мая 2011

У меня есть 20 TextBox в форме. И у меня есть общее событие KeyPress для всех этих текстовых полей.

Поэтому я пытаюсь объявить событие нажатия клавиши следующим образом ... возможно ли это?

for (int Cnl = 1; Cnl < 21; Cnl++)
{
   ((RichTextBox)Cnl).KeyPress += new KeyPressEventHandler(this.Comn_KeyPress);
}

Ответы [ 2 ]

2 голосов
/ 23 мая 2011

Для приложения WPF вы можете зарегистрировать глобальные обработчики событий, используя методы статического класса EventManager:

// Register the following class handlers for the TextBox XxFocus events.
EventManager.RegisterClassHandler(typeof(TextBox), TextBox.GotKeyboardFocusEvent, 
    new RoutedEventHandler(HandleTextBoxFocus));

Затем добавьте любую необходимую логику в обработчик событий, например:

.
    private void HandleTextBoxFocus(Object sender, RoutedEventArgs e)
    {
        (sender as TextBox).SelectAll();
    }
2 голосов
/ 23 мая 2011

правильная идея;но приведение int к RichTextBox никогда не будет работать.Попробуйте это:

 foreach (var control in this.Controls)
 {
     var text = control as RichTextBox;
     if (text != null)
          text.KeyPress += new KeyPressEventHandler(this.Comn_KeyPress);
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...