如题。我用了mousedown、mouseclick等事件都没用,求教高手。

解决方案 »

  1.   

    可以对子窗体使用NativeWindow子类化,然后处理WndProc方法来处理鼠标按在标题栏的消息。
      

  2.   

    hbxtlhx谢谢,你能不能说的具体点(比如给点代码),我刚学这个没多长时间,不太明白。
      

  3.   

    是什么类型的父子窗体呢?MDI类型的吗?
      

  4.   

    父窗体(form1)是mid窗体,有两个子窗体(form2,form3).
      

  5.   

    父窗体是MDI窗体,刚才打错了,写成了mid了
      

  6.   

    你可以在每一个子窗体(或所有子窗体的基窗体中)放如下的代码来处理这个消息:protected override void WndProc(ref Message m)
    {
    if (m.Msg == 0xa1 && (int)m.WParam == 0x2)
    {
    MessageBox.Show("click");
    }
    base.WndProc(ref m);
    }如果子窗体不能被改写而只能在主窗体里处理,这个时候才需要对其子类化。或使用MessageFilter来处理消息。
      

  7.   

    在主窗体里处理的时候可以参考如下的代码://在主窗口里定义如下的类:
    class SubWindow : NativeWindow
    {
    protected override void WndProc(ref Message m)
    {
    if (m.Msg == 0xa1 && (int)m.WParam == 0x2)
    {
    MessageBox.Show("click");
    }
    base.WndProc(ref m);
    }
    }
    //在建立子窗体的时候参考如下的代码:
    FormSub f = new FormSub();
    f.MdiParent = this;SubWindow nw = new SubWindow();
    nw.AssignHandle(f.Handle);
    this.m_native.Add(nw);
      

  8.   

    我刚才试了下,在主窗体可以运行,但是在子窗体就回出现异常(系统提示确保没有无限循环或递归).估计要用子类化了,刚才查询了msdn,还不太懂
    hbxtlhx,你能在帮帮我吗?谢谢了
      

  9.   

    this.m_native.Add(nw);中间怎么有"_",我在程序里找了半天也没找到
      

  10.   

    在主窗体里声明就是了:
    private ArrayList m_native;