多个事件的事件侦听器
本文关键字:事件 侦听器 | 更新日期: 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
,而不是Name
或Text