【发布时间】:2016-04-09 10:40:55
【问题描述】:
我的第一篇文章,如果这个问题已经得到解答,我深表歉意 - 我已经搜索和搜索,但没有找到任何关于使用自定义 EventArgs 和现有 SystemEvents 的细节。
我正在尝试利用 SystemEvents.PowerModeChanged 类型的事件,但想使用我自己的自定义 EventArgs 而不是标准的 PowerModeChangedEventArgs。我的方法是创建一个名为 CustomPowerModeChangedEventArgs 的类,它继承自 PowerModeChangedEventArgs 并改用这些类,但我不知道如何告诉 PowerModeChangedEventHandler 使用这些新的 CustomEvent 参数。我的代码如下:
//Define the custom args which inherit from the PowerModeChangedEventArgs
public class CustomPowerModeChangedEventArgs : PowerModeChangedEventArgs
{
public string batterylevel { get; set; }
}
//event raising method with CustomArgs instead of the PowerModeChangedEventArgs
protected virtual void PowerModeChanged(object source, CustomPowerModeChangedEventArgs e)
{
}
SystemEvents.PowerModeChanged += new PowerModeChangedEventHandler(PowerModeChanged);
问题在于 PowerModeEventChangedHandler 不接受带有 CustomArgs 的 PowerModeChanged 方法。如果它是一个通用的事件处理程序,我可以定义像...
public event EventHandler<CustomPowerModeChangedEventArgs> PowerModeCHanged;
...但我无法理解如何使用非通用事件处理程序实现类似的功能。我怀疑有可能使用 lambda 表达式将新的自定义参数发送到处理程序,但我真的不确定 - 也许我需要定义一个全新的 EventChangedHandler?任何建议将不胜感激。
【问题讨论】: