问题描述
一个窗口关闭的时候告诉另外一个窗口,如何实现?
解决方案
解决方案二:
注册一个事件namespaceWindowsApplication1{publicpartialclassForm1:Form{Form2form2=newForm2();publicForm1(){InitializeComponent();form2.FormClosed+=OnForm2Closed;//<---form2.Show();}publicvoidOnForm2Closed(objectsender,FormClosedEventArgse){MessageBox.Show("form2closed");}//...}
解决方案三:
不错,不过还有一个疑问,就是如何传递参数呢?就像sendmessage那样
解决方案四:
不错,不过还有一个疑问,就是如何传递参数呢?classForm2{//...publicstringGetUserOption(){returnuserOption;}//<----stringuserOption;}classForm1{publicvoidOnForm2Closed(objectsender,FormClosedEventArgse){MessageBox.Show("form2closed"+form2.GetUserOption());//<----}}
...就像sendmessage那样最好不用,也没必要用。
解决方案五:
up
解决方案六:
窗体间传递参数?用构造函数
解决方案七:
在窗体重注册FormClosing或FormClosed事件,不过也可以参考一下这里,http://blog.csdn.net/zhzuo/archive/2006/05/05/708941.aspx
解决方案八:
引用3楼gomoku的回复:
不错,不过还有一个疑问,就是如何传递参数呢?C#codeclassForm2{//...publicstringGetUserOption(){returnuserOption;}//<----stringuserOption;}classForm1{publicvoidOnForm2Closed(objectsender,FormClosedEventArgse){MessageBox.Show("form2closed"+form2.GetUserOption());//此处可以写你想要的操作,在此也可以传递参数}}MessageBox.Show("form2closed"+form2.GetUserOption());...就…
解决方案九:
publicdelegatevoidFormCloseHandel(objectsender,FormEventArgse);publicclassFormEventArgs:EventArgs{privatestringname;publicstringName{get{returnname;}set{name=value;}}publicFormEventArgs(stringname){this.name=name;}}publicclassFormEvent{publiceventFormCloseHandelformCloseEvent;publicvoidOnCloseForm(FormEventArgse){if(this.formCloseEvent!=null){formCloseEvent(this,e);}}}用的时候可以这样:比如在Form2的Close事件里写FormEventf=newFormEvent();f.formCloseEvent+=newFormCloseHandel(f_formCloseEvent);f.OnCloseForm(newFormEventArgs("aa"));voidf_formCloseEvent(objectsender,FormEventArgse)//事件调用的方法{Console.WriteLine(e.Name);}FormEventArgs是一个事件数据类根据再见的需要写