Я деякий час працював над своїм проектом Windows Forms, і я вирішив поекспериментувати з комбінаціями клавіш. Трохи прочитавши, я зрозумів, що мені потрібно просто написати обробник події та прив’язати його до події KeyDown форми:
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.Control && e.Alt && e.KeyCode == Keys.O)
{
MessageBox.Show("Ctrl+Alt+O: magic!");
}
}
Я зробив це хорошим старим способом відкриття панелі властивостей дизайнера Visual Studio, а потім двічі клацнувши на подію KeyDown моєї форми, щоб створити Form1_KeyDown
обробник подій. Але під час тестування моєї програми форма взагалі не реагує на комбінацію клавіш Ctrl+ Alt+ O. Дизайнер Visual Studio справді створив код для прив'язки обробника події до форми:
private void InitializeComponent()
{
// ...
this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.Form1_KeyDown);
// ...
}
Тож я спробував додати Console.WriteLine()
виклик обробнику, щоб перевірити, чи його взагалі викликали, але і цьому не пощастило.
Крім того, я спробував встановити точку зупинки у виклику прив'язки події (показаний трохи вище) і виявив, що програма досягає цієї точки зупинки чудово. Але будь-які точки зупинку, які я встановив у самому визначенні методу, ніколи не досягаються.
Щоб переконатися, що я робив перші кілька кроків правильно, я спробував повторити їх за допомогою:
Нова форма в тому ж розчині.
Та сама проблема: форма не відповідає, коли я натискаю комбінацію клавіш Ctrl+ Alt+, Oа налагоджувач навіть не заходить у обробник подій.Спробував це ще раз, і це працює.Нове рішення WinForms.
Це чудово працює: з’являється діалогове вікно повідомлення (Console.WriteLine()
дзвінок також працює).
Тож я тут зовсім загубився. Що заважає всім формам цього проекту отримувати події KeyDown?