我有一个面板,我有很多按钮。有没有办法可以检查是否点击了这些按钮,如果是,则更改该特定按钮的文字?
我一直在四处寻找,直到现在我才知道这是
foreach (Control button in panel1.Controls)
{
if ( button.Click == ??? ) //I can't use '==',
//but I don't know what to do here
{
//changing the text would happen here
}
}
有人可以帮助我吗?
答案 0 :(得分:3)
您可以让所有按钮使用相同的点击事件处理程序:
protected void Button_Clicked(object sender, EventArgs e)
{
((Button) sender).Text = "Insert Text Here";
}
在你的构造函数中:
this.Button1.Click += new System.EventHandler(this.Button_Clicked);
this.Button2.Click += new System.EventHandler(this.Button_Clicked);
答案 1 :(得分:3)
您可以做的最简单的事情是将相同的事件处理程序附加到Buttons
内的所有Panel
点击事件。
var buttons = panel1.Controls.OfType<Button>();
foreach(var btn in buttons)
btn.Click += Button_Click;
private void Button_Click(object sender, EventArgs e)
{
var btn = sender as Button;
if(btn != null) btn.Text = "Something else";
}
或者您可以使用lambda语句而不是声明单独的方法:
var buttons = panel1.Controls.OfType<Button>();
foreach(var btn in buttons)
btn.Click += (s,e) => ((Button)s).Text = "Clicked";