Bir süredir Windows Forms projem üzerinde çalışıyorum ve klavye kısayollarını denemeye karar verdim. Biraz okuduktan sonra, sadece bir olay işleyicisi yazmam ve onu formun KeyDown olayına bağlamam gerektiğini düşündüm:
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.Control && e.Alt && e.KeyCode == Keys.O)
{
MessageBox.Show("Ctrl+Alt+O: magic!");
}
}
Bunu, Visual Studio tasarımcısının Özellikler panelini açmanın ve ardından Form1_KeyDown
olay işleyicisini oluşturmak için formumun KeyDown olayını çift tıklatmanın iyi bir yolunu yaptım . Ancak başvurumu test ederken, form Ctrl+ Alt+ Oklavye kısayoluna hiç yanıt vermiyor . Visual Studio tasarımcısı, olay işleyicisini forma bağlamak için kod oluşturdu:
private void InitializeComponent()
{
// ...
this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.Form1_KeyDown);
// ...
}
Bu yüzden Console.WriteLine()
, işleyiciye çağrıldığını kontrol etmek için bir çağrı eklemeyi denedim , ama bunda da şans yok.
Ayrıca, olay bağlama çağrısında (hemen yukarıda gösterilen) bir kesme noktası ayarlamaya çalıştım ve programın bu kesme noktasına gayet iyi ulaştığını gördüm. Ancak yöntem tanımının kendisinde belirlediğim herhangi bir kesme noktasına asla ulaşılmaz.
İlk birkaç adımı doğru yaptığımdan emin olmak için bunları şu şekilde tekrarlamayı denedim:
Aynı çözümde yeni bir form.
Aynı sorun: Ctrl+ 'a bastığımda form yanıt vermiyorAlt + Oklavye kısayoluma bastığımda ve hata ayıklayıcı olay işleyicisine bile girmiyor.Bunu tekrar denedim ve işe yarıyor.Yepyeni bir WinForms çözümü.
Mükemmel çalışıyor: mesaj diyaloğu belirir (Console.WriteLine()
çağrı da çalışır).
Yani burada oldukça kayboldum. Bu tek projedeki tüm formların KeyDown olaylarını almasını engelleyen nedir?