注册一个事件namespace WindowsApplication1
{
public partial class Form1 : Form
{
Form2 form2 = new Form2();
public Form1()
{
InitializeComponent();
form2.FormClosed += OnForm2Closed; //<---
form2.Show();
} public void OnForm2Closed(object sender, FormClosedEventArgs e )
{
MessageBox.Show( "form2 closed" );
}
//...
}
{
public partial class Form1 : Form
{
Form2 form2 = new Form2();
public Form1()
{
InitializeComponent();
form2.FormClosed += OnForm2Closed; //<---
form2.Show();
} public void OnForm2Closed(object sender, FormClosedEventArgs e )
{
MessageBox.Show( "form2 closed" );
}
//...
}
class Form2
{
//...
public string GetUserOption() { return userOption; } //<----
string userOption;
}class Form1
{
public void OnForm2Closed(object sender, FormClosedEventArgs e )
{
MessageBox.Show( "form2 closed" + form2.GetUserOption() ); //<----
}
}...就像sendmessage那样
最好不用,也没必要用。
http://blog.csdn.net/zhzuo/archive/2006/05/05/708941.aspx
public delegate void FormCloseHandel(object sender, FormEventArgs e);
public class FormEventArgs : EventArgs
{
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
public FormEventArgs(string name)
{
this.name = name;
}
}public class FormEvent
{
public event FormCloseHandel formCloseEvent; public void OnCloseForm(FormEventArgs e)
{
if (this.formCloseEvent != null)
{
formCloseEvent(this, e);
}
}
}用的时候可以这样:
比如在Form2的Close事件里写
FormEvent f = new FormEvent();
f.formCloseEvent += new FormCloseHandel(f_formCloseEvent);
f.OnCloseForm(new FormEventArgs("aa")); void f_formCloseEvent(object sender, FormEventArgs e)//事件调用的方法
{
Console.WriteLine(e.Name);
}
FormEventArgs 是一个事件数据类根据再见的需要写