如何触发事件?

时间:2014-02-25 13:45:46

标签: c# .net wpf events

我有这个事件处理程序,我需要在WPF应用程序中以编程方式触发此事件。 问题可能与访问修饰符有关。 知道怎么做吗?

private void Monitor (object sender, EventArgs e)
{
    if (App.monitor.IsPrinterReady() == false)
    {
        App.isPrintAllowed = false;               
    }
    else
    {
        App.isPrintAllowed = true;
    }
}

4 个答案:

答案 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());
    }
}