我在C#中创建了一个具有多个组件的gui。每个组件都有一个按钮。我想知道点击的按钮来自哪个组件。我不知道开始的组件数量,因为我允许用户添加更多,如果他们想要,所以我不能命名他们或任何东西来弄明白。谢谢!
答案 0 :(得分:1)
据推测,您可以为每个“组件”挂上按钮的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
参数中找到该项目。
答案 1 :(得分:0)
我建议创建一个例如。 ButtonClicked在每个组件上,然后使用该组件作为事件处理程序中的object sender
参数。