好吧,这里举个例子:
- 我有 UserControl A、UserControl B、UserControl C 和一个 Windows 窗体。
- 此 Windows 窗体仅使用 UserControl A 启动。
- UserControl C 有 [Next] 和 [Back] 按钮。
- 比如,UserControl A 声明了一个事件处理程序。 UserControl A 中的函数之一实际上会引发事件调用以在 UserControl C 中执行一个函数。
- 因此,在 UserControl C 中,我必须添加 with
"UserControlA.OneFunction += this.UserControlC_Function;"
- 如果我单击 UserControl C 上的“下一步”按钮,它将处理 UserControl A 并将新的 UserControl B 添加到 Windows 窗体。但我从不手动删除此事件处理程序。
UserControl A 中的函数之一是调用者(声明事件的地方)。
UserControl C 中的功能之一是监听器。
所以,这些是我的问题:
- 我应该在处理 UserControl A 之前手动删除处理程序吗?
- 这个用户控件 A dispose 会自动删除之前声明的处理程序吗?
- 我应该在某处添加这个吗?
"UserControlA.OneFunction -= this.UserControlC_Function;"
最佳答案
- 按照惯例,我们不这样做。并且由于在处理后不应该调用任何事件,因此没有必要这样做,除非相关控件的行为异常。
- 没有。至少没有从反射器上看到的代码。
关于C# 我应该手动删除我声明的事件处理程序吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6926364/