能否将双击事件的处理函数都统一起来,根据参数sender来判断是哪个控件触发的呢?比如有Button1和Button2,他们的doubleclick事件都委托到Button_DoubleClick,在Button——DoubleClick中判断哪个Button触发的,再去做相应处理。

解决方案 »

  1.   

    重写窗体的wndproc,以及对所有控件作subclass,拦截消息处理。
      

  2.   

    private const int WM_LBUTTONDBLCLK = 0x203;
    protected override void WndProc(ref Message m)
            {
                switch (m.Msg)
                {
                    case WM_LBUTTONDBLCLK:
                        MessageBox.Show("鼠标双击");
                        break;
                    
                }
                base.WndProc(ref m);
            }
      

  3.   


                EventHandler handler = (o, e1) => MessageBox.Show("鼠标双击");            Action<Control.ControlCollection> addListener = null;
                addListener = (cs) =>
                {
                    foreach (Control item in cs)
                    {
                        item.DoubleClick += handler;
                        addListener(item.Controls);
                    }
                };            addListener(Controls);
      

  4.   

    重写WndProc方法 然后拦截WM_LBUTTONDBLCLK = 0x203;事件