我在一个应用程序中有多个层,我发现自己必须将事件冒泡到GUI层,以便进行状态栏更改等操作。。我发现自己不得不重复编写代码,其中每一层都简单地订阅来自较低层的事件,然后在回调中简单地向上引发一个事件。有没有更有效的方法来做到这一点?
发布于 2008-10-20 02:22:44
如果您所做的只是从另一个事件处理程序触发一个事件处理程序,那么您可以跳过中间人,直接在事件的add/remove块中挂钩事件处理程序。
例如,如果您有一个带有"SaveButtonClick“事件的UserControl,当单击UserControl上的"SaveButton”时,您要做的就是调用事件处理程序,您可以这样做:
public event EventHandler SaveButtonClick
{
add { this.SaveButton.Click += value; }
remove { this.SaveButton.Click -= value; }
}现在你不需要任何代码来触发SaveButtonClick事件-它将在SaveButton.Click事件被引发时自动触发(即当有人单击该按钮时)。
发布于 2008-10-22 09:58:26
请阅读Jeremy Miller的博客"The Shade Tree Developer",特别是他的 series -他在那里谈到的命令模式的东西可能就是你所需要的。
发布于 2008-11-25 20:13:27
Peter Rilling发布了一种在winforms中模拟事件冒泡/广播的方法。它简单而有效。
http://www.codeproject.com/KB/cs/event_broadcast.aspx
https://stackoverflow.com/questions/217233
复制相似问题