不用消息用delegate就行了,大致思路如下
//**********FatherWindow.cs***********
public delegate void EventCallBackHandle();public class FatherWindow : System.Windows.Forms.Form
{
    public event EventCallHandle OnCallBack;
    ……
    {
        ChildWindow a = new ChildWindow();
        //订阅event
        OnCallBack += new EventCallHandle(a.Function)
    }
    ……
    public void call()
    {
        if (OnCallBack != null)
           OnCallBack();
    }
}//**********ChildWindow.cs***********
public class ChildWindow : System.Windows.Forms.Form
{
     public void Function()
     {
       //子窗口的对应的代码
     }
}

解决方案 »

  1.   

    public delegate void { EventCallBackHandle }();
    public event { EventCallHandle } OnCallBack;被我用{}括起来的是不是一个东西啊,是写的时候没注意吗?
    如果不是的话,那声明那个public delegate void EventCallBackHandle();
    有什么用啊
    还有这个涵数OnCallBack();不是太明白意思,能不能讲一下呢?
      

  2.   

    看看我的代码:public class DatagridEventArgs : EventArgs{
    private int mPage; public DatagridEventArgs(int page){
    mPage = page;
    } public int Page{
    get{return mPage;}
    set{mPage=value;}
    }
    }//然后生命一个delegate:
    public delegate void DatagridEventHandler(object sender,DatagridEventArgs e);//然后定义你的event:
    public event DatagridEventHandler DataBinded;//最后定义你的方法:
    protected void OnDataBinded(DatagridEventArgs e){
    DataBinded(this,e);
    }//在程序代码中这样调用:
    DatagridEventArgs e = new DatagridEventArgs(mCurrentPage);
    DataBinded(this,e);
      

  3.   

    我来补充说明一下:public delegate void { EventCallBackHandle }();
    //生明一个代理
    public event { EventCallHandle } OnCallBack;
    //用上面声明的那个代理(EventCallHandle)定义一个事件
      

  4.   

    代理不能解决所有问题,可以在DefWndProc函数中处理,关于这个消息处理函数名我记得不是太清楚,你可核实一下!