在循环中向每个按钮添加事件 C#

问题描述 投票:0回答:1

我需要为每个按钮添加一个单击事件。

单击按钮时,它会将点添加到 SQL 数据表,但我可以自己完成,我只需要启动方面的帮助。

for (int i = 0; i < matches.Count; i++)
{
     Button buttonWhite = new Button();
     //button settings
     buttonWhite.Tag = i;
     round1.Controls.Add(buttonWhite);

     Button buttonDraw = new Button();
     //button setting
     buttonDraw.Tag = i;
     round1.Controls.Add(buttonDraw);

     Button buttonBlack = new Button();
     //button settings
     buttonBlack.Tag = i;
     round1.Controls.Add(buttonBlack);
}

按钮数量不同

c# winforms
1个回答
0
投票

像下面这样的怎么样?值可能不正确,但由于您可以自己完成该部分,因此这是一个如何动态创建可用事件的工作示例。

    public Form1()
    {
        InitializeComponent();
        List<int> matches = new List<int>() { 1,2,3 };
        round1.Size = new Size(1000, 1000);
        int x = 1;
        int y = 1;
        int buttonHeight = 20;
        int buttonWidth = 100;
        int pad = 25;
        for (int i = 0; i < matches.Count; i++)
        {
            Button buttonWhite = new Button()
            {
                Location = new Point(x+(buttonWidth*i)+pad, x),
                Size = new Size(buttonWidth, buttonHeight),
                Text = $"Button{(i*3)+1}",
                Tag = i
            };
            round1.Controls.Add(buttonWhite);
            buttonWhite.Click += Button_Click;

            Button buttonDraw = new Button()
            {
                Location = new Point(x + (buttonWidth * i) + pad, x + pad),
                Size = new Size(buttonWidth, buttonHeight),
                Text = $"Button{(i*3)+2}", 
                Tag = i
            };
            round1.Controls.Add(buttonDraw);
            buttonDraw.Click += Button_Click;

            Button buttonBlack = new Button()
            {
                Location = new Point(x + (buttonWidth * i) + pad, x + (pad*2)),
                Size = new Size(buttonWidth, buttonHeight),
                Text = $"Button{(i*3)+3}", 
                Tag = i
            };
            round1.Controls.Add(buttonBlack);
            buttonBlack.Click += Button_Click;
        }
    }
    private void Button_Click(object sender, EventArgs e)
    {
        int value = (int)((Button)sender).Tag;
        MessageBox.Show($"Add {value} to SQL Table here");            
    }
© www.soinside.com 2019 - 2024. All rights reserved.