WinForm的事件订阅到另一个类 [英] WinForm event subscription to another class
本文介绍了WinForm的事件订阅到另一个类的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
public partial class Form1 : Form
{
private EventThrower _Thrower;
public Form1()
{
InitializeComponent();
}
private void DoSomething()
{
MessageBox.Show("It worked");
}
private void button1_Click(object sender, EventArgs e)
{
_Thrower = new EventThrower();
//using lambda expression..need to use .NET2 so can't use this.
_Thrower.ThrowEvent += (sender2, args) => { DoSomething(); };
var eventThrower = new EventThrower();
eventThrower.test();
}
}
public class EventThrower
{
public delegate void EventHandler(object sender, EventArgs args);
public event EventHandler ThrowEvent = delegate { };
public void SomethingHappened()
{
ThrowEvent(this, new EventArgs());
}
public void test()
{
System.Threading.Thread.Sleep(1000);
SomethingHappened();
}
}
我试图让我的winform UI认购在EventThrower类的事件。 DoSomething的永远不会触发。
I'm trying to get my winform UI to subscribe to an event in EventThrower class. DoSomething never fires.
推荐答案
这是因为你创造。调用测试之前,一个新的EventThrower
This is because you create a new EventThrower before calling test.
如果您改变:
var eventThrower = new EventThrower();
eventThrower.test();
到
to:
_Thrower.test();
这将调用DoSomething的。
It will call DoSomething.
这篇关于WinForm的事件订阅到另一个类的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文