Создать пользовательский элемент управления из другого потока - PullRequest
2 голосов
/ 15 ноября 2010

Я хочу создать кнопку (созданную мной как пользовательский элемент управления) из другого потока, отличного от того, на котором я хочу создать.Дело в том, что я знаю, как изменить объект пользовательского контроля из другого потока (используя делегат и .InvokeRequired), но я не знаю, как я мог его создать.Есть предложения?

Ответы [ 3 ]

4 голосов
/ 15 ноября 2010

Попробуйте следующее:

// From the other thread

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

    button.Text = "My new button";

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

Внутри делегата (() => { }) вы можете делать все что угодно с пользовательским элементом управления и формой.

2 голосов
/ 15 ноября 2010

Используйте так же, как для изменения пользовательского элемента управления.Функция, которая создает элемент управления, должна выполняться в потоке пользовательского интерфейса и вызываться с использованием Invoke или BeginInvoke.Передайте всю информацию, необходимую для создания элемента управления, используя параметры делегата.

2 голосов
/ 15 ноября 2010
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...