winform上如果有按钮的话,一按方向他就在按钮之见切换焦点了。而且焦点怎么也去不掉,这样form本身就无法相应方向键了啊。有人说把keypreview属性设为true,我试了,这样可以响应其他键,还是不能相应方向的呀~高手帮忙。

解决方案 »

  1.   

    1)设置KeyPreview为true;2)捕获窗体KeyDown事件
            private void Form1_KeyDown(object sender, KeyEventArgs e)
            {
                if (e.KeyData == Keys.Left)
                {
                    textBox1.Text = "abc123";
                }
            }
      

  2.   

    增加 e.SuppressKeyPress = true;
      

  3.   

    "有人说把keypreview属性设为true,我试了,这样可以响应其他键,还是不能相应方向的呀~高手帮忙。"
    我上面说清楚了老大。。
      

  4.   

    响应方向的事件KeyUp  KeyDown   PreviewKeyDown 
    KeyPress的响应方式是Char
      

  5.   

    用PreProcessMessage,
            public override bool PreProcessMessage(ref Message msg)
            {
                if ((Keys)msg.WParam ==Keys.UP) 
                 {
                  做你的事情;
                  如果不希望窗体继续收到按键,在这里return true; 
                 }
                   
                return base.PreProcessMessage(ref msg);
            }
      

  6.   


    private void Form1_KeyDown(object sender, KeyEventArgs e)
            {
               if(e.KeyCode==上下左右)
               {
                    DoSomething();
                    e.Handled = true;//加上这句
               }
            }