C# 事件是否可以用作事件侦听器?
我试图从我正在创建的对象中包含的私有对象中公开一些事件,看起来编译器对此很满意:C# 事件是否可以用作事件侦听器?,c#,events,C#,Events,我试图从我正在创建的对象中包含的私有对象中公开一些事件,看起来编译器对此很满意: private WindowUpdateServer _windowUpdateServer; public event WindowUpdateHandler WindowUpdated; public RecieveWindowFramesManager() { _windowUpdateServer = new WindowUpdateServer(); _windowUpdateSe
private WindowUpdateServer _windowUpdateServer;
public event WindowUpdateHandler WindowUpdated;
public RecieveWindowFramesManager() {
_windowUpdateServer = new WindowUpdateServer();
_windowUpdateServer.ExistingWindowUpdated += WindowUpdated; // ExistingWindowUpdated is a WindowUpdateHandler
}
但在接收到WindowFramesManager初始化后_windowUpdateServer.ExistingWindowUpdated==null
我是不是遗漏了什么——这似乎应该有用
值得注意的是,在ReceiveWindowFramesManager初始化后,我将事件侦听器附加到WindowUpdated,但它从未被调用(即使触发了\u windowUpdateServer.ExistingWindowUpdated)。我不确定,但我认为这只会从WindowUpdated事件中分配这些处理程序,在+=操作发生时设置的。因为它是一个构造函数,所以列表是空的。若要执行所需操作,请为ExistingWindowUpdated创建自己的事件处理程序,并从此处启动WindowUpdated事件。我将执行以下操作:
public event WindowUpdateEventHandler WindowUpdated
{
add{ _windowUpdateServer.ExistingWindowUpdated += value; }
remove{ _windowUpdateServer.ExistingWindowUpdated -= value; }
}
但是,如果在事件处理程序中实际使用sender参数,则会出现一些问题;它将指向内部对象,而不是从中获取事件的对象。Nice!比我的解决方案更优雅!我刚试过这个,效果很好。非常好的解决方案。再次感谢您的解释。ArildF的解决方案在我的情况下非常有效——因此我接受了他的答案,认为它更合适。