private void Form1_KeyPress(object sender, KeyPressEventArgs e)
{
Form2 r1= new Form2();
string s = Convert.ToString(e.KeyChar);
if (s == "F1")
r1.Show();
}
Нажатие кнопки в C#
Я пробовал так:
Код:
Но когда запускаю проект и жму F1 ничего не происходит.
Используйте другое событие нажатия кнопки. Думаю, сообразите, какое.
Вообще, по смыслу, вызов другой формы можно делать из меню. Это привычно большинству пользователей. Сделайте главное меню, в нём пункт показа второй формы, у него свойство ShortcutKeys поставьте F1.
Если стандартное меню не вписывается в общий дизайн, всё равно можно сделать реакцию нажатия на функциональные клавиши с его помощью, а само меню спрятать: Visible = false.
особенно интересно, что форма каждый раз создается и вообще независимо от того нажата или нет нужная клавиша
Проверила сейчас в справке, почему же не работает, т.к. насчет того, что возвращает char, а это строка - не так это, возвращается все правильно, код клавиши и при конвертации все должно отображаться правильно, т.е. "F1", но событие KeyPress работает только с символьными клавишами, для отлавливания события нажатия клавиши F1 и ей подобной надо использовать событие KeyDown и/или KeyUp, и все работает, по крайней мере для down я проверила, но в данном примере я бы использовала все же Up, как по мне, это логичней.
private void Form1_KeyUp(object sender, KeyEventArgs e)
{
string key = Convert.ToString(e.KeyData);
if (key == "F1")
{
Form1.ActiveForm.Enabled = false;
Help helpme = new Help();
helpme.Show();
}
}