Событие KeyDown / KeyPress / KeyUp Как получить название нажатой кнопки? - PullRequest
0 голосов
/ 30 марта 2020

Скажите, как я могу получить название кнопки, на которую вы нажали?

Пример:

public void HotKey_KeyDown(object sender,KeyEventArgs key)
{
    MessageBox.Show(key.GetName()); //For example: Enter or some other button
}

Ответы [ 2 ]

0 голосов
/ 30 марта 2020

Кнопка имеет свойство Name. Кнопка (или любой другой элемент, вызвавший событие) - sender. Но может быть то, что сбивает с толку, если вы не привыкли к этому, это то, что sender свободно набирается как object, а object не имеет Name, поэтому вы не найдете его непосредственно в автозаполнении, и он не скомпилируется, если вы напишите sender.Name.

Вы можете разыграть sender как соответствующий класс. Например, Button, et c ... Хорошее решение для многократного использования - просто использовать Control, как прокомментировал Ганс Пассант. Что-то вроде:

if (sender is Control control)
{
    MessageBox.Show(control.Name);
}
0 голосов
/ 30 марта 2020

Если под «кнопкой» вы подразумеваете клавишу клавиатуры (и я не уверен, что это имеет отношение к нажатию, может быть, на экранной клавиатуре?) ...

KeyDown и KeyUp события проходят KeyEventArgs.

Есть много свойств, которые нужно исследовать, но вы можете просто сделать:

MessageBox.Show(key.KeyCode.ToString()); //For example: Enter [Return] or some other button [key]

Событие KeyPress проходит KeyPressEventArgs, что не так многословно.

Вы можете попробовать:

MessageBox.Show(key.KeyChar.ToString());

... как следует из названия, это всего лишь символ.

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