Как мне прочитать ввод с клавиатуры на Winform? - PullRequest
5 голосов
/ 23 сентября 2011

Я пытался использовать события KeyUp и KeyDown для чтения ввода с клавиатуры, но как только я помещаю другие элементы управления в Winform, клавиши не читаются. Как мне убедиться, что ключи прочитаны?

Ответы [ 4 ]

4 голосов
/ 23 сентября 2011

Вы можете установить KeyPreview = true в своей форме, чтобы перехватывать события клавиатуры.

РЕДАКТИРОВАНИЕ , чтобы вы поняли:

private void Form1_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.A) 
        e.SuppressKeyPress = true;
}

Глупый сэмпл, который получает события клавиатуры и сбрасывается при нажатии A.
Если фокус находится в текстовом поле, вы увидите, что текст написан, но не A !!

ВНОВЬ ИЗМЕНЕНО: Я взял этот код из примера VB.NET.
В вашем usercontrol используйте событие «Нажатие клавиши» в текстовом поле, чтобы вызвать «событие usercontrol».
Этот код будет в вашем пользовательском контроле пользователя:

'Declare the event
Event KeyPress(KeyAscii As Integer) 

Private Sub Text1_KeyPress(KeyAscii As Integer)
    RaiseEvent KeyPress(KeyAscii)
End Sub
2 голосов
/ 23 сентября 2011

Как говорит Марко, установите для KeyPreview значение true в вашей форме, чтобы перехватывать ключевые события во всей форме, а не только в элементе управления.

Используйте событие KeyPress ... KeyUp / Down - это больше для платформы, чемваш код.KeyDown хорош, если вы хотите отключить ключ ... числовые поля и т. Д. В общем, KeyPress - это тот, который вам нужен.

Если вы хотите предотвратить распространение нажатий клавиш на другие элементы управления, установите KeyPressEventArgs.Обработано = true.

http://msdn.microsoft.com/en-us/library/system.windows.forms.control.keypress(v=VS.90).aspx

Вы подключили обработчик событий?

MyForm.KeyDown += MyHandler;

Вы также можете сделать это на панели свойств ... щелкнитезначок события ...

2 голосов
/ 23 сентября 2011

См .: http://msdn.microsoft.com/en-us/library/system.windows.forms.form.keypreview.aspx

set KeyPreview = true и ваши KeyUp и KeyDown распознают все вводимые с клавиатуры данные.

0 голосов
/ 24 сентября 2011

Если вы ищете свою форму для чтения с клавиатуры, у вас уже есть ответ от других корреспондентов. Я добавляю этот вклад для того, чтобы вы могли захотеть добавить обработку ключей к другим элементам управления или элементам управления в форме. Моя статья Изучение секретов обработки нажатий клавиш .NET , опубликованная на DevX.com (увы, она требует регистрации, но бесплатна), дает вам исчерпывающую дискуссию о том, как и почему происходят все различные ловушки и события обработки клавиш. в игру. Кроме того, статья включает в себя бесплатную утилиту «Keystroke Sandbox», которая фактически позволяет увидеть, какие элементы управления получают какие события обработки ключей.

Вот одна иллюстрация из статьи, чтобы подогреть аппетит:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...