从另一个线程创建用户控件

时间:2010-11-15 14:44:32

标签: c# winforms multithreading

我希望从我想要创建的其他线程创建一个按钮(由我作为用户控件创建)。问题是我知道如何从另一个线程修改用户控件对象(使用委托和.InvokeRequired),但我不知道如何创建一个。有什么建议吗?

3 个答案:

答案 0 :(得分:4)

尝试以下方法:

// From the other thread

userControl11.BeginInvoke(new Action(() =>
{
    var button = new Button();

    button.Text = "My new button";

    userControl11.Controls.Add(button);
}));

在委托(() => { })中,您可以使用用户控件和表单执行任何操作。

答案 1 :(得分:2)

答案 2 :(得分:2)

使用与修改用户控件相同的方法。创建控件的函数必须在UI线程中执行,并使用Invoke或BeginInvoke调用。使用委托参数传递控件创建所需的所有信息。