多个事件的事件监听器

时间:2013-07-20 20:58:18

标签: c# events event-handling

这是一个最佳实践问题。

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

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

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

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

1 个答案:

答案 0 :(得分:4)

您的选择是:

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