多个事件的事件侦听器

本文关键字:事件 侦听器 | 更新日期: 2023-09-27 18:24:08

这是一个最佳实践问题。

假设我有一个班,a,里面有两个按钮,buttonOne和buttonTwo。另一个类B希望监听两个按钮的点击事件,但不需要持有对所述按钮的实际引用(或者知道如何获取A)。

区分B中事件处理程序内的两个按钮的最佳方法是什么?

private void button_Clicked(object sender, System.EventArgs e)
{
    Who is the sender? buttonOne? buttonTwo?
}

除了依赖按钮的名称/文本之外,还有其他方法吗?

多个事件的事件侦听器

您的选择是:

  • 使用不同的事件处理程序
  • 保留对按钮的引用。如果B可能比UI寿命更长,则您可能更喜欢WeakReference
  • 创建Button的子类,通过某些属性或方法公开它们之间的差异
  • 使用Button的一些现有属性来区分按钮。为此,首选属性应为Tag,而不是NameText