Windows.Form not fire keyDown event

2019-04-04 01:57发布

private void screensaverWindow_Load(object sender, System.EventArgs e)
{            
    this.BringToFront();            
    this.Focus();
    this.KeyPreview = true;
    this.KeyDown += new KeyEventHandler(onkeyDown);            
}        

onKeyDown() is never called. Any idea why?

EDIT: This works in release mode!? I guess it must be visual studio debugger interfering somewhere

3条回答
Explosion°爆炸
2楼-- · 2019-04-04 02:29

How about menus, do you have menus with shortcut keys defined? I had an issue where a context menu that was hidden was actually swallowing cetain keys and not passing them on to any of the form key events

查看更多
你好瞎i
3楼-- · 2019-04-04 02:30

Seems to work for me:

public Form1()
{
    InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
    this.BringToFront();
    this.Focus();
    this.KeyPreview = true;
    this.KeyDown += new KeyEventHandler(Form1_KeyDown);
}

void Form1_KeyDown(object sender, KeyEventArgs e)
{
    Console.WriteLine("test");
}

Are there any child controls on your form ?

查看更多
甜甜的少女心
4楼-- · 2019-04-04 02:30

This is caused by the interception of events by child controls on form. If this is not desirable, you need set KeyPreview property of parent form to True

查看更多
登录 后发表回答