Я пытаюсь добавить событие "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
}
}
Все еще работа, хотя...
Вы смешиваете библиотеки классов, не используйте классы 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;
}
}
}
Вы смотрели документацию по KeyPress
? В нем конкретно указано, что Событие KeyPress не вызывается несимвольными клавишами; однако клавиши без символов действительно вызывают события KeyDown и KeyUp . Вместо этого должно сработать использование одного из этих событий.