如何从c#winforms中的其他类侦听类中的事件处理程序?
我有两个类,我在一个类中初始化事件处理程序。我需要从另一个类中监听这个事件处理程序。我可以用哪种方式实现这一点 我已经试过了如何从c#winforms中的其他类侦听类中的事件处理程序?,c#,winforms,C#,Winforms,我有两个类,我在一个类中初始化事件处理程序。我需要从另一个类中监听这个事件处理程序。我可以用哪种方式实现这一点 我已经试过了 public event EventHandler NetworkLostEvent; 我使用此代码触发事件 NetworkLostEvent(this, EventArgs.Empty); 如何从其他类收听此事件?您需要订阅此事件 可以使用以下行订阅事件 //Lets say you have event defined in class2 or form2 for
public event EventHandler NetworkLostEvent;
我使用此代码触发事件
NetworkLostEvent(this, EventArgs.Empty);
如何从其他类收听此事件?您需要订阅此事件 可以使用以下行订阅事件
//Lets say you have event defined in class2 or form2
form2.NetworkLostEvent += NetworkLostEventTriggered;
private void NetworkLostEventTriggered(object sender, EventArgs e)
{
//logic
}
或者
如果我理解正确,您需要的是一个全局事件,例如:1 datagridview更改了单元格值,自动更改所述datagridview的任何其他类似实例的单元格值,是否正确 如果是这种情况,下面是我如何处理同时调用多个实例的事件() 在网上搜索解决方案后,我找到了一个非常适合我的解决方案。这是一个“特殊”事件,您可以自己创建并随意开火:
public class SpecialEvents
{
//first custom event
public EventArgs e = null;
public event StartEventHandlerA StartedEventA;
public delegate void StartEventHandlerA(SpecialEvents se, EventArgs e);
public void StartEventA()
{
if (StartedEventA != null)
{
StartedEventA(this, e);
}
}
//second custom event
public event StartEventHandlerB StartedEventB;
public delegate void StartEventHandlerB(SpecialEvents se, EventArgs e);
public void StartEventB()
{
if (StartedEventB != null)
{
StartedEventB(this, e);
}
}
}
现在我们需要订阅上述定制活动:
SpecialEvents special_Events = new SpecialEvents();
special_Events.StartedEventA += special_Events_StartedEventA;
现在是触发该事件时要执行的代码:
void special_Events_StartedEventA(SpecialEvents se, EventArgs e)
{
//do whatever you want for this specific class/object once that event is fired
}
最后,您可以随时随地触发事件:
special_Events.StartEventA();
这将做的很简单,任何与该事件相关联的依赖/独立代码都应该在特定时间触发,无论哪个对象触发该事件,都会为所有对象触发该事件,并且每个对象或类都将执行其自己的脚本或代码
这样一来,你不仅可以完成你想要的监听功能,还可以同时完成大量的工作。
yourClass.NetworkLostEvent+=(sender,args)=>{//your code}
你为什么还没有选择Answare?对我的方法或某人的方法有任何疑问吗?如果没有一件适合,请说明,以便我们能进一步帮助您。
special_Events.StartEventA();