我正在使用C#制作Windows窗体应用程序。我在运行时以编程方式添加按钮和其他控件。我想知道如何处理这些按钮的点击事件?
答案 0 :(得分:29)
尝试以下
Button b1 = CreateMyButton();
b1.Click += new EventHandler(this.MyButtonHandler);
...
void MyButtonHandler(object sender, EventArgs e) {
...
}
答案 1 :(得分:20)
使用此代码处理多个按钮的点击事件:
private int counter=0;
private void CreateButton_Click(object sender, EventArgs e)
{
//Create new button.
Button button = new Button();
//Set name for a button to recognize it later.
button.Name = "Butt"+counter;
// you can added other attribute here.
button.Text = "New";
button.Location = new Point(70,70);
button.Size = new Size(100, 100);
// Increase counter for adding new button later.
counter++;
// add click event to the button.
button.Click += new EventHandler(NewButton_Click);
}
// In event method.
private void NewButton_Click(object sender, EventArgs e)
{
Button btn = (Button) sender;
for (int i = 0; i < counter; i++)
{
if (btn.Name == ("Butt" + i))
{
// When find specific button do what do you want.
//Then exit from loop by break.
break;
}
}
}
答案 2 :(得分:3)
如果要查看单击了哪个按钮,则可以在创建和分配按钮后执行以下操作。考虑到您手动创建按钮ID:
protected void btn_click(object sender, EventArgs e) {
Button btn = (Button)sender // if you're sure that the sender is button,
// otherwise check if it is null
if(btn.ID == "blablabla")
// then do whatever you want
}
您也可以通过为每个按钮提供命令参数来检查它们。
答案 3 :(得分:2)
答案 4 :(得分:2)
似乎这样可行,同时为数组的每个元素添加标记
Button button = sender as Button;
你知道更好的方法吗?
答案 5 :(得分:0)
关于您的评论说你想知道点击了哪个按钮,你可以将按钮的.Tag属性设置为你想要的任何类型的识别字符串,并使用
private void MyButtonHandler(object sender, EventArgs e)
{
string buttonClicked = (sender as Button).Tag;
}