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

解决方案 »

  1.   

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

  2.   

    自己写个事件,当父窗体的keydown执行时,执行此事件,子窗体用新事件.
      

  3.   

    正确
    这样行不 this.keydown+=新的方法名字
      

  4.   

    你的代码是怎么样的?子窗体的事件不会被覆盖啊。。
    如果定义了一个窗体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
      

  5.   

    父窗体上按回车键当Tab处理,
    子窗体上按回车键设置文本框Focus()
    结果子窗体文本框按回车键后就跳到下个tab,没有在指定的窗体获取焦点
      

  6.   

    确定执行顺序,会不会是先执行的子窗体事件获得焦点,然后执行的父窗体事件,tab,所以现在这个状态,加messboxshow看看顺序.
      

  7.   

    重写子控件OnKeyDown方法
    确保不调用base.OnKeyDown()方法
      

  8.   

    更了一下,先执行父窗体事件,在执行子窗体,最后还是执行的父窗体tab方法,不是子窗体Focus()
    方法
      

  9.   

     父窗体定义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();
                }  
    结果运行后,子窗体没有获取到焦点,这是什么原因?