gpt4 book ai didi

c# - 使列表中的按钮将唯一数据发送到方法

转载 作者:太空宇宙 更新时间:2023-11-03 23:44:27 24 4
gpt4 key购买 nike

我制作了一个应用程序,它将按钮放置在一个网格中,用户可以在其中指定游戏场的大小。我在列表中创建按钮,指定一些数据,如背景图像、大小和位置。然后我需要以某种方式让不同的按钮执行不同的代码。我想我可以用一种方法来做到这一点(如果没有任何好的方法以编程方式创建方法),如果我能以某种方式让按钮向方法发送一条独特的信息来识别按下了哪个按钮。

    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 方法接收一个对象发送者被点击的按钮。您只需将其转换为 Button:

void Any_Button_Click(object sender, EventArgs e)
{
Button b = (Button)sender;
// do stuff here
}

您可以使用按钮的 Location 属性来确定它在游戏板上的位置,或者您可以使用 在初始化时选择的任何信息将任意对象分配给按钮>像这样标记属性:

button.Tag = "someHelpfulString";

或者像这样:

button.Tag = new Tuple<int, int>(xpos, ypos);

(其中 xposypos 是按钮网格中的位置)

或者像这样:

button.Tag = new ButtonInfoObject(foo, bar, baz);

(这里由您定义 ButtonInfoObject 类。)

关于c# - 使列表中的按钮将唯一数据发送到方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27931392/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com