我有这个事件处理程序,我需要在WPF应用程序中以编程方式触发此事件。 问题可能与访问修饰符有关。 知道怎么做吗?
private void Monitor (object sender, EventArgs e)
{
if (App.monitor.IsPrinterReady() == false)
{
App.isPrintAllowed = false;
}
else
{
App.isPrintAllowed = true;
}
}
答案 0 :(得分:3)
由于您询问 如何举起活动 ,因此:
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();
这种设计更清洁,更有意义恕我直言。
答案 1 :(得分:1)
您应该能够像方法一样调用它:
Monitor (null, null);
答案 2 :(得分:1)
只需像任何其他函数/方法一样调用它:
Monitor(null, null)
答案 3 :(得分:1)
标准做法是使用OnMonitor方法,该方法可用于以编程方式触发事件。然后,这将调用该事件的所有订阅者。
另请注意,如果您没有该事件的订阅者,则Monitor将为null,因此您需要首先检查它是否为null,以避免抛出异常的风险。
private void OnMonitor()
{
if (Monitor != null)
{
Monitor(this, new EventArgs());
}
}