不用消息用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()
{
//子窗口的对应的代码
}
}
//**********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()
{
//子窗口的对应的代码
}
}
public event { EventCallHandle } OnCallBack;被我用{}括起来的是不是一个东西啊,是写的时候没注意吗?
如果不是的话,那声明那个public delegate void EventCallBackHandle();
有什么用啊
还有这个涵数OnCallBack();不是太明白意思,能不能讲一下呢?
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);
//生明一个代理
public event { EventCallHandle } OnCallBack;
//用上面声明的那个代理(EventCallHandle)定义一个事件