我在应用程序中有多个图层,我发现自己不得不将事件冒泡到GUI层以进行状态栏更改等..我发现自己必须编写重复编码,其中每一层简单地订阅来自较低层的事件,然后在回调中简单地向上引发一个事件.有更有效的方法吗?
如果您所做的只是从另一个事件处理程序触发事件处理程序,您可以删除中间人并直接在事件的添加/删除块中挂钩事件处理程序.
例如,如果您有一个带有"SaveButtonClick"事件的UserControl,并且在单击UserControl上的"SaveButton"时调用事件处理程序时想要执行的操作,则可以执行以下操作:
public event EventHandler SaveButtonClick { add { this.SaveButton.Click += value; } remove { this.SaveButton.Click -= value; } }
现在,您不需要任何代码来触发SaveButtonClick事件 - 当引发SaveButton.Click事件时(即当有人单击该按钮时),它将自动触发.