Windows.Form not fire keyDown event

31,692

Solution 1

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 ?

Solution 2

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

Solution 3

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

Share:
31,692
Admin
Author by

Admin

Updated on July 25, 2022

Comments

  • Admin
    Admin almost 2 years
    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

  • Admin
    Admin almost 14 years
    One label, but that isn't firing any key events either.
  • Bob G
    Bob G almost 14 years
    I'm not having problems with the example either. Seems to work as expected. Lose the other controls on the page and then attempt to reproduce. My guess is akin to the others here, you've likely got some other control that has focus.
  • LairdPleng
    LairdPleng over 2 years
    this should be the accepted answer