Отсутствует событие" KeyPress " для текстового поля WinForms?
Я пытаюсь добавить событие "нажатие клавиши" в текстовое поле (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" была нажата, что-то произойдет...
однако моя машина не может найти событие "нажатие клавиши". Что-то не так с моими кодами?
обновление:
Я также попытался поставить KeyDown вместо Нажатие клавиши:
private void textBox1_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
{
if (e.Key == Key.Return)
// Enter is pressed - do something
}
}
все равно не работает...
3 ответов
вы смешиваете библиотеки классов, не используйте классы 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;
}
}
}
вы смотрели документация on KeyPress
? В нем конкретно говорится, что событие нажатия клавиши не вызывается нехарактерными ключами; однако нехарактерные ключи вызывают события KeyDown и KeyUp. Вместо этого следует использовать одно из этих событий.
попробуйте следующие шаги он будет работать, bcoz я протестировал его.
- выберите текстовое поле, щелкните его правой кнопкой мыши и выберите Свойства.
- нажмите на событие, затем дважды щелкни по нажатие
-
введите следующий код.
private void textBox2_KeyPress(object sender, KeyPressEventArgs e) { if (e.KeyChar == (char)13) { //press Enter do Something Like i have messagebox below to show "wow" MessageBox.Show("wow"); } else { } }