private void Form1_KeyPress(object sender, KeyPressEventArgs e)
{
    switch(e.KeyChar)
    {
        case (char)Keys.Down:
            Down();
            break;
        default:
            break;
    }
}
当焦点在PictureBox上时,按 键down 没有触发事件是什么原因啊?

解决方案 »

  1.   


    恩,我在form的构造函数里加了,但是不管用啊,按键down 时只是窗体上焦点在变动啊。
      

  2.   

    Form1_KeyPress 具有焦点的对象接收该事件。一个窗体仅在它没有可视和有效的控件或 KeyPreview KeyPreview KeyPreview KeyPreview 属性被设置为 True True True True 时才能接收该事件。一个 KeyPress 事件可以引用任何可打印的键盘字符,一个来自标准字母表的字符或少数几个特殊字符之一的字符与 CTRL 键的组合,以及 ENTER 或 BACKSPACE 键。
    给你个链接看看吧。
      

  3.   

    如果用需要down 键可以用时间KeyDown
      

  4.   

     public Form2()
            {
                this.KeyPreview = true;
                this.KeyDown += new KeyEventHandler(Form2_KeyDown);
                InitializeComponent();
            }        void Form2_KeyDown(object sender, KeyEventArgs e)
            {
                MessageBox.Show("g");
            }
    经测试,可以。你确定下你添加了事件没
      

  5.   


    我是想使用 up down left right键实现对方块左移、右移;可是在Form的构造函数里加
    public Form1
    {
       InitializeComponent();   this.KeyPress += new KeyPressEventArgs(Form1_KeyPress);
       this.KeyPreview = true;
    }private void Form1_KeyPress(object sender, KeyPressEventArgs e)
    {
        switch(e.KeyChar)
        {
            case (char)Keys.Down:
                Down();
                break;
            default:
                break;
        }
    }private void Down()
    {
        //
    }可是当跑时,按下 键down 时,只是焦点在控件间转移!这是为什么啊?
    你说down键行不通是什么意思啊?
      

  6.   

     Form1_KeyPress 事件 不响应 Down 按键的。
    http://wenku.baidu.com/view/7ad5c643a8956bec0975e32b.html
    这个链接你看看吧。
      

  7.   

    用窗体的KeyDown 事件来解决你的问题不行吗。