Событие “KeyPress” для текстового поля WinForms отсутствует?

Я пытаюсь добавить событие "KeyPress" в текстовом поле (WinForm)

this.textBox1.KeyPress += new System.Windows.Forms.KeyPressEventHandler(CheckKeys);

и вот в 'CheckKeys':

private void CheckKeys(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
    if (e.KeyChar == (char)13)
    {
        // Enter is pressed - do something

    }
}

Идея здесь состоит в том, что, после того как текстовое поле находится в фокусе, и кнопка 'Enter' была нажата, что-то произойдет...

Однако моя машина не может найти событие 'KeyPress'. Есть ли что-то не так с моими кодами?

ОБНОВЛЕНИЕ:

Я также пытался поместить KeyDown вместо KeyPress:

private void textBox1_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
{

    if (e.Key == Key.Return)

        // Enter is pressed - do something
    }
}

Все еще работа, хотя...

7
задан John Saunders 3 April 2010 в 13:46
поделиться

2 ответа

Вы смешиваете библиотеки классов, не используйте классы Windows Forms в проекте WPF. Сделайте это так:

  public partial class Window1 : Window {
    public Window1() {
      InitializeComponent();
      this.textBox1.KeyDown += new KeyEventHandler(textBox1_KeyDown);
    }

    private void textBox1_KeyDown(object sender, KeyEventArgs e) {
      if (e.Key == Key.Enter) {
        MessageBox.Show("Enter!");
        e.Handled = true;
      }
    }
  }
10
ответ дан 6 December 2019 в 21:11
поделиться

Вы смотрели документацию по KeyPress ? В нем конкретно указано, что Событие KeyPress не вызывается несимвольными клавишами; однако клавиши без символов действительно вызывают события KeyDown и KeyUp . Вместо этого должно сработать использование одного из этих событий.

6
ответ дан 6 December 2019 в 21:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: