在C#中为动态按钮添加功能

时间:2016-03-29 21:59:08

标签: c# forms function events button

我动态创建了一个Form,在里面我创建了一个按钮,但是当我尝试将我的函数添加到按钮时,它会出现这个错误:

  

预期的方法名称。

我使用以下代码:

        {
        ...
        Form newForm = new Form();
        newform.Size = new Size(477, 222);
        Button btn = new Button();
        btn.Size = new Size(121, 23);
        btn.Location = new Point(231, 102);
        btn.Text = "Text";
        btn.Click += new EventHandler(Funct(label1.Text, label12.Text));
        newForm.Controls.Add(btn);
    }

    public void Funct(string stringA, string stringB)
    {
        StreamWriter write = new StreamWriter(path);
        write.WriteLine(stringA + "-" + stringB);
        write.Close();
    }

我该怎么做才能解决这个问题?

2 个答案:

答案 0 :(得分:2)

问题是Funct不符合Click事件的签名:

尝试:

public void Funct(object sender,EventArgs e) { ... }

如果要动态传递字符串,可能需要创建自己的EventArgs类,在那里添加其他属性。

希望有所帮助。

答案 1 :(得分:1)

使用lambda,将click事件更改为

btn.Click += (s, e) => { Funct(label1.Text, label12.Text) };