我有一个带3个窗口的示例窗体。每个窗口都有一个标签,主窗体有一个按钮。
public class CustomEventArgs : EventArgs
{
public string Message { get; set; }
public CustomEventArgs(string message)
{
Message = message;
}
}
public delegate void CustomEventHandler(object sender, CustomEventArgs args);
public class EventCode
{
public void Process()
{
var cea = new CustomEventArgs("I was processed");
if (MyEvent != null)
{
MyEvent.Invoke(this, cea);
}
}
public event CustomEventHandler MyEvent;
}
在我的主窗体上,我将按下按钮,让它处理EventCode类中的代码,然后调用事件。我希望事件向两个打开的窗体发送一条消息,然后在屏幕上显示一条消息。
这是我在Form1中的按钮点击代码:
private void Form1_Load(object sender, EventArgs e)
{
Window1 w1 = new Window1();
w1.Show();
Window2 w2 = new Window2();
w2.Show();
}
private void button1_Click(object sender, EventArgs e)
{
EventCode ec = new EventCode();
ec.Process();
}
EventCode ec = new EventCode();
public Window1()
{
InitializeComponent();
ec.MyEvent += new CustomEventHandler(ec_MyEvent);
}
void ec_MyEvent(object sender, CustomEventArgs args)
{
label1.Text = args.Message;
}
窗口2重复
当我单击按钮时,事件订阅不会在每个窗体上显示文本。如果我在主窗体上创建事件订阅,它将显示。
我不知道该走哪条路来实现这个功能。
思想?