我制作了一个应用程序,该应用程序将在网格中放置按钮,用户可以在其中指定运动场的大小。我在列表中创建按钮,指定一些数据,例如backgroundimage,大小和位置。然后,我需要以某种方式使不同的按钮执行不同的代码。我想我可以用一种方法来执行此操作(如果没有以编程方式创建方法的好方法),如果我可以使按钮将唯一的信息发送给该方法以标识哪个按钮被按下的话。
public void buttonplacer()
{
int nbrofbtns = Form2.puzzlesize * Form2.puzzlesize;
List<Button> btnslist = new List<Button>();
for (int i = 0; i < nbrofbtns; i++)
{
Button newButton = new Button();
btnslist.Add(newButton);
this.Controls.Add(newButton);
newButton.Name = "btn" + i.ToString();
newButton.Width = btnsidelength;
newButton.Height = btnsidelength;
newButton.Top = btnsidelength * Convert.ToInt32(Math.Floor(Convert.ToDouble(i / Form2.puzzlesize)));
newButton.Left = btnsidelength * Convert.ToInt32(Math.Floor(Convert.ToDouble(i)) - Math.Floor((Convert.ToDouble(i)) / (Form2.puzzlesize)) * (Form2.puzzlesize));
newButton.BackgroundImage = Lights_out_.Properties.Resources.LightsOutBlack;
newButton.Click += new EventHandler(Any_Button_Click);
}
}
void Any_Button_Click(object sender, EventArgs e)
{
}
(如果您想知道我正在玩一个名为“ Light's out”的游戏),谢谢!
该Any_Button_Click
方法接收的object sender
那个是得到了点击的按钮。您只需要将其强制转换为Button
:
void Any_Button_Click(object sender, EventArgs e)
{
Button b = (Button)sender;
// do stuff here
}
您可以使用按钮的Location
属性来确定按钮在游戏板上的位置,也可以使用以下Tag
属性将任意对象分配给按钮,该对象具有在初始化时选择的任何信息:
button.Tag = "someHelpfulString";
或像这样:
button.Tag = new Tuple<int, int>(xpos, ypos);
(其中xpos
和ypos
是按钮网格中的位置)
或像这样:
button.Tag = new ButtonInfoObject(foo, bar, baz);
(这取决于您定义ButtonInfoObject类。)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句