1

嗨,我想在我的代码后面的代码中将几个按钮及其单击事件动态添加到我的 Windows 窗体应用程序中,我的按钮将在其中执行System.Diagnostics.Process.Start(targetURL); ,我该如何实现?

4

4 回答 4

4

您只需要创建按钮,设置它的属性和事件处理程序,然后将其添加到Controls表单上的集合中。

var button = new Button();
try
{
    button.Text = "Button 1";
    button.Click += (sender, e) => System.Diagnostics.Process.Start(targetURL);
    //Or if you don't want to use a lambda and would rather have a method;
    //button.Click += MyButton_Click;
    Controls.Add(button);
}
catch
{
    button.Dispose();
    throw;
}

//Only needed when not using a lambda;
void MyButton_Click(Object sender, EventArgs e)
{
    System.Diagnostics.Process.Start(targetURL);
}
于 2012-09-05T08:31:40.250 回答
2

您可以将任何您喜欢的控件添加到Controls表单的集合中:

var targetURL = // ...

try
{
    SuspendLayout();

    for (int i = 0; i < 10; i++)
    {
        var button = new Button();
        button.Text = String.Format("Button {0}", i);
        button.Location = new Point(0, i * 25);
        button.Click += (object sender, EventArgs e) => System.Diagnostics.Process.Start(targetURL);
        this.Controls.Add(button);
    }
}
finally
{
    ResumeLayout();
}

将多个控件添加到父控件时,建议您SuspendLayout在初始化要添加的控件之前调用该方法。将控件添加到父控件后,调用该ResumeLayout方法。这样做将提高具有许多控件的应用程序的性能。

于 2012-09-05T08:32:13.837 回答
2

声明你的按钮变量。

添加事件处理程序

将它们添加到表单控件属性中。

利润

于 2012-09-05T08:32:45.337 回答
2

您可以编写一个包含文本框“txbURL”、按钮“btnNavigateToURL”的用户控件并编写按钮的事件处理程序,以执行您的代码(System.Diagnostics.Process.Start(targetURL);)

完成后,很容易在运行时将控件添加到表单中,编写类似这样的代码(现在没有 ac# 编辑器,因此您可能需要验证代码)

MyControlClassName userControl = new MyControlClassName(string targetUrl);
userControl.Parent = yourForm;
yourForm.Controls.Add(userControl);

就是这样。

于 2012-09-05T08:34:41.077 回答