WinForm事件订阅另一个类publicpartialclassForm1:Form{privateEventThrower_Thrower;publicForm1(){InitializeComponent();}privatevoidDoSomething(){MessageBox.Show(“有效”);}privatevoidbutton1_Click(objectsender,EventArgse){_Thrower=newEventThrower();//使用lambda表达式..需要使用.NET2所以不能使用它。_Thrower.ThrowEvent+=(sender2,args)=>{DoSomething();};vareventThrower=newEventThrower();eventThrower.test();}}publicclassEventThrower{publicdelegatevoidEventHandler(objectsender,EventArgsargs);公共事件EventHandlerThrowEvent=delegate{};publicvoidSomethingHappened(){ThrowEvent(this,newEventArgs());}publicvoidtest(){System.Threading.Thread.Sleep(1000);发生了一些事();我正在尝试让我的winformUI订阅EventThrower类中的事件。DoSomething永远不会触发。c#如何订阅其他类的事件?这是因为您在调用测试之前创建了一个新的EventThrower。如果你改变:vareventThrower=newEventThrower();eventThrower.test();到:_Thrower.test();它会调用DoSomething。事件不是静态的,每个EventThrower实例都存在一个EventHandler实例。您在_Thrower上订阅了事件,但您创建了一个新的EventThrower实例并在该实例上调用了test()。您从未订阅该实例上的事件,因此您的处理程序无法运行。应该是:以上是C#学习教程:WinForm事件订阅另一个类分享的全部内容。如果对大家有用,需要详细了解C#学习教程,希望大家多多关注—_Thrower.ThrowEvent+=(sender2,args)=>{DoSomething();};_Thrower.test();本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
