我正在开发一个小型桌面GUI,可以动态创建动态分配按钮的网格(自定义大小)。我已经设法让它工作,现在我正在试图找到一种方法来唯一识别每个按钮。
现在,我正在尝试在创建控件时找到一种方法来分配一个事件处理程序,这种方法与所有其他事件处理程序是唯一的,这样当单击按钮时,只有该按钮才会改变颜色。只是为了澄清,这是使用C#作为桌面应用程序,我正在使用winforms。
示例代码:
buttonArray[i, k] = new Button();
buttonArray[i, k].Name = "b_" + i.ToString() + "_" + k.ToString();
//**FIGURE OUT HOW TO PASS THE NAME VARIABLE
buttonArray[i,k].Click +=delegate
{
MessageBox.Show(i.ToString() + " " + k.ToString());
// Change the color of b_xlocation_ylocation
};
谢谢!
答案 0 :(得分:0)
我不明白为什么你不能只为每个按钮点击事件附加一个处理程序,并在引发事件时设置颜色。只要您使用事件的sender参数,就只会在单击的按钮上设置颜色。也许你需要提供你想要实现的更多细节。
请尝试以下方法......
buttonArray[i, k].Click += delegate(object sender, EventArgs e)
{
MessageBox.Show(i.ToString() + " " + k.ToString());
// Change the color of b_xlocation_ylocation
var buttonThatWasClicked = (Button) sender;
buttonThatWasClicked.BackColor = Color.Red;
};