日期:2014-05-19  浏览次数:20810 次

不同窗体间的事件传递
如何在一个工程下的两个窗体间传递事件,比如说由一个窗体的一个事件触发另外一个窗体的事件。

------解决方案--------------------
直接在窗体1调用窗体2的事件方法是可以实现的。如下,点击窗体1的按钮会调用窗体2的button1_Click方法,而这个方法把Form3显示出来。
Form1的按钮事件
private void button1_Click(object sender, System.EventArgs e)
{
Form2 form2 = new Form2();
form2.button1_Click(this, EventArgs.Empty);
}

Form2的按钮事件
public void button1_Click(object sender, System.EventArgs e)
{
form3 = new Form3();
form3.Show();
}
------解决方案--------------------
public delegate void WndEventHandler(object sender, SomeEventArgs e);
public event WndEventHandler On_Wnd1;
public event WndEventHandler OnWnd2;

public Button_Click(object sender, EventArgs e)
{
if(On_Wnd1 != null) On_Wnd1(this, e);
}

public void On_Wnd1(object sender, SomeEventArgs e)
{
if(OnWnd2 != null) OnWnd2(this, e);
}