日期:2014-05-18  浏览次数:20648 次

关于利用委托实现两个窗体互相调用方法
有A、B两个窗口,A窗口中有一个按钮和一个方法,A中的方法需要使用B窗口返回的数据
1、单击A窗口中的按钮打开B
2、B关闭时执行A窗口中的事件

需要用委托来完成,不能使用showdialog(),B窗口打开是非模式的(Show()),最好是能应用到多个窗口,比如C窗口也有按钮和事件,也需要打开C窗口执行同上的操作。

------解决方案--------------------
代码可以这样写,注册窗体的 FormClosed 事件
C# code
frmB B = new frmB();
B.MdiParent = this.MdiParent;
B.FormClosed += (sender, e) =>
{
    frmB fb = (frmB)sender;
    // 访问 fb 的字段属性方法
    MessageBox.Show("B窗口已关闭!");
};
B.Show();

------解决方案--------------------
FormB b = new FormB();

b.FormClosed += (s, e) =>
 {
string data = b.Data; // 获取B的数据
AMethod(data); // 将B的数据用来调用方法
 }
------解决方案--------------------
http://topic.csdn.net/u/20110407/19/c1068d69-7331-4d02-bc0b-f5ba7a5f8dd8.html