鼓泡事件.

leo*_*ora 26 c# events winforms

我在应用程序中有多个图层,我发现自己不得不将事件冒泡到GUI层以进行状态栏更改等..我发现自己必须编写重复编码,其中每一层简单地订阅来自较低层的事件,然后在回调中简单地向上引发一个事件.有更有效的方法吗?

Mat*_*ton 31

如果您所做的只是从另一个事件处理程序触发事件处理程序,您可以删除中间人并直接在事件的添加/删除块中挂钩事件处理程序.

例如,如果您有一个带有"SaveButtonClick"事件的UserControl,并且在单击UserControl上的"SaveButton"时调用事件处理程序时想要执行的操作,则可以执行以下操作:

public event EventHandler SaveButtonClick
{
    add { this.SaveButton.Click += value; }
    remove { this.SaveButton.Click -= value; }
}
Run Code Online (Sandbox Code Playgroud)

现在,您不需要任何代码来触发SaveButtonClick事件 - 当引发SaveButton.Click事件时(即当有人单击该按钮时),它将自动触发.

  • 按钮是订户的一部分,但是,如果没有用户控制按钮将不存在,因此依赖性很好. (3认同)