如何跟踪单击按钮的组件
本文关键字:单击 按钮 组件 跟踪 何跟踪 | 更新日期: 2023-09-27 18:20:12
我在C#中制作了一个包含多个组件的gui。每个组件都有一个按钮。我想知道被点击的按钮来自哪个组件。我不知道一开始要添加的组件数量,因为如果用户愿意,我允许他们添加更多,所以我无法命名它们或任何东西来计算。谢谢
假设您已经为每个"组件"钩住了按钮的Click事件。
在这种情况下,在事件处理程序中使用"sender"参数,并根据(希望)已知的控制树结构从那里解析它。
void button_Clicked(object sender, EventArgs e)
{
var button = sender as Button;
var ownerControl = button.Parent as MyControl; // But you may need to walk up more levels if need be... Depends on your UI structure.
// Do stuff with button and owner control
}
或者更好的是,从你的"组件"中"气泡"事件,这样它就会有自己的事件:
public event EventHandler ButtonClicked;
protected virtual void OnButtonClicked()
{
var handler = ButtonClicked;
if (handler != null)
{
handler(this, EventArgs.Empty);
}
}
void button_Clicked(object sender, EventArgs e)
{
OnButtonClicked(); // Bubble the event
}
然后,您的主控件(带有所有"组件")将挂接到每个生成项的ButtonClicked事件上,并可以直接从处理程序的sender
参数中找到该项。
我建议在每个组件上创建一个事件,例如ButtonClicked,然后将该组件用作事件处理程序中的object sender
参数。