[英]How to trigger an event?
我有此事件处理程序,我需要在WPF应用程序中以编程方式触发此事件。 问题可能与访问修饰符有关。 知道怎么做吗?
private void Monitor (object sender, EventArgs e)
{
if (App.monitor.IsPrinterReady() == false)
{
App.isPrintAllowed = false;
}
else
{
App.isPrintAllowed = true;
}
}
由于您询问了如何引发该事件 ,因此,方法如下:
YourClassInstance.YourEvent(YourClassInstance, SomeEventArgsInstance);
当然,仅当您在自己的班级中声明了自己的事件时,此方法才有效。 如果没有,那么除非所述类的API允许它以某种方式您将无法做到这一点。
您仍然可以像其他人建议的那样调用绑定到事件的函数,但是我会做不同的事情:
private void MonitoringHandler (object sender, EventArgs e)
{
Monitor();
}
private void Monitor()
{
App.isPrintAllowed = App.monitor.IsPrinterReady();
}
在这里, MonitoringHandler
方法是您要绑定到事件的方法(无论它是什么)。 之后,如果您需要以编程方式调用事件触发的相同操作,则只需调用Monitor
函数即可,就像调用其他方法一样,不带任何参数:
YourClass.Monitor();
这种设计更清洁,恕我直言。
您应该能够像方法一样调用它:
Monitor (null, null);
就像调用其他函数/方法一样调用它: Monitor(null, null)
标准做法是使用OnMonitor方法,该方法可用于以编程方式触发事件。 然后,这将呼叫该事件的所有订阅者。
还要注意,如果您没有该事件的订阅者,则Monitor将为null,因此您需要首先检查它是否为null,以避免引发异常的风险。
private void OnMonitor()
{
if (Monitor != null)
{
Monitor(this, new EventArgs());
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.