C#窗口程序中,我定义了一个键盘按就触发的方法,但是方法的内容无被执行,为什么呢?会不会是焦点的问题呢?
        private void Form1_KeyDown(object sender, KeyEventArgs e)
        {
            MessageBox.Show("keydown");
        }

解决方案 »

  1.   

    如果窗体上没有任何控件的时候,可以直接响应消息事件
    但是如果窗体上有其他控件的时候,消息就由控件来处理了,
    可以设置属性 KeyPreview
    //获取或设置一个值,该值指示在将键事件传递到具有焦点的控件前,窗体是否将接收此键事件。
    this.KeyPreview = false;
      

  2.   

    false,当前选定控件接收键事件,this.KeyPreview = true;true,表示窗体将接收所有键的事件你试试吧
      

  3.   

     测试了一下
      如果你新建一个窗体,上面没有任何控件的话,你的方法就会实现
     
      如果窗体上面有控件的话,你的方法就不能实现了  你的窗体上一定有其他的控件
     
     PS:其实如果窗体上面有控件的话,为什么不把方法写到控件的KeyDown的事件中呢?写在窗体中没有意义啊!
      

  4.   

    benxiong_tb说的确实是正确的。