将代码分配给使用代码创建的按钮的内存

时间:2018-01-10 06:46:25

标签: c# winforms

您好我创建了一段这样的代码,但这是我的问题。我现在该怎么办谢谢。

我想立即将代码分配给我在这里创建的按钮,我需要使用这个代码按钮并在给出它作为每个按钮的示例后Shift1 = 5 Shift2 = 10 Shift3 = 15 Shift4 = 20 Shift5 = 25需要来写。但是在它写的所有按钮中25.我创建的按钮数量是可变的。我正在研究SQL。按钮按名称生成值

我的代码;

    public int syc = 0;
    private void button1_Click(object sender, EventArgs e)
    {
        syc = 0;
        Button[] ara = new Button[5];
        for (int i = 0; i < 5; i++)
        {
            ara[i] = new Button();
            ara[i].Text = "Shift";
            ara[i].Size = new Size(50, 50);
            ara[i].Location = new Point(50, i * 50);
            this.Controls.Add(ara[i]);                
            ara[i].Click += Form1_Click;
            syc = syc + 5;
        }
    }

    private void  Form1_Click( object sender, EventArgs e)
    {
        a(syc);
    }
    private int a(int b)
    {
        MessageBox.Show(b.ToString());
        return b ;
    }

2 个答案:

答案 0 :(得分:0)

现在所有按钮在使用共享变量syc的click上共享相同的功能。这就是为什么它们都会激发相同的价值。

替换

var temp = i* 5;
ara[i].Click += (se, ev) => a(temp);

通过

FileList

这将为所有按钮创建一个专用功能。请注意,temp变量是必需的,因为它将由lambda捕获。

答案 1 :(得分:0)

控件具有多用途属性,称为“标记”。创建按钮时,将相应的int值放在那里,并在发件人的事件方法中获取它,即按钮。