在父窗体定义KeyDown事件,子窗体也定义KeyDown事件,现在子窗体执行事件后被父窗体事件覆盖了,怎么处理?

解决方案 »

  1.   

    void control_KeyDown(object sender, KeyEventArgs e)
    {
     ......//子窗体事件处理
     e.Handled = true;//指定上级控件不再处理此事件
    }
      

  2.   

    你的代码是怎么样的?子窗体的事件不会被覆盖啊。。
    如果定义了一个窗体ismdicontainer=true;发现form_KeyDown()事件没有效果。。
     private void 打开子窗体ToolStripMenuItem_Click(object sender, EventArgs e)
            {
                Form2 frm2 = new Form2();
                //frm2.MdiParent = this;
                frm2.Show();
            }
     private void Form1_KeyDown(object sender, KeyEventArgs e)
            {
                MessageBox.Show("这个是父窗体");
            }
      private void Form2_KeyDown(object sender, KeyEventArgs e)
            {
                MessageBox.Show("这个是子窗体");
            }
    当前窗体是form1或者form2就会执行各自的from_KeyDown
      

  3.   

     父窗体定义KeyDown事件
       if ((int)(Keys.Enter) == e.KeyChar)
                {
                    SendKeys.Send("{" + Keys.Tab.ToString() + "}");
                }
    子窗体定义KeyDown事件
    if (e.KeyCode == Keys.Enter && textBox1.Text.Trim().Length > 0)
                {
                    textBox1.Focus();
                    textBox1.Clear();
                }  
    结果运行后,子窗体没有获取到焦点,这是什么原因?
      

  4.   

    子窗体定义KeyDown事件  这个,应该写到textBox1的KeyDown事件里吧
      

  5.   

    MSDN上说的很明白,textBox1.Focus();是过时的函数,应该用textBox1.Select();(不带参数)
      

  6.   

    this.ActiveControl = this.textBox1;
    this.textbox1.focus() ;