Я хочу создать кнопку (сделанную мной как пользовательский контроль) из другого потока, отличного от того, который я хочу создать. Дело в том, что я знаю, как изменить объект управления пользователем из другого потока (используя делегат и .InvokeRequired), но я не знаю, как я мог его создать. Какие-либо предложения ?Создайте пользовательский контроль из другого потока
2
A
ответ
4
Попробуйте следующее:
// From the other thread
userControl11.BeginInvoke(new Action(() =>
{
var button = new Button();
button.Text = "My new button";
userControl11.Controls.Add(button);
}));
В рамках делегата (() => { }
), вы можете сделать все, что угодно с контролем пользователя и формы.
2
Пожалуйста, прочитайте мой предыдущий пост:
why isn't user-control class access not safe from another thread?
управления резьб:
2
Используйте точно так же, как для изменения пользовательского элемента управления. Функция, которая создает элемент управления, должна выполняться в потоке пользовательского интерфейса и вызываться с использованием Invoke или BeginInvoke. Передайте всю информацию, необходимую для создания контроля, используя параметры делегата.
Смежные вопросы
- 1. Пользовательский контроль и пользовательский контроль
- 2. Debugging из другого потока
- 3. Иерархия Пользовательский пользовательский контроль
- 4. Пользовательский/пользовательский контроль
- 5. Что такое пользовательский контроль и пользовательский контроль?
- 6. DoDragDrop() из другого потока
- 7. Создайте фигуру из другого
- 8. Создайте функцию из другого
- 9. Как обновить пользовательский интерфейс из другого потока в Android?
- 10. Многопоточность формы и пользовательский контроль
- 11. Завершение потока в C++ из другого потока
- 12. Как получить состояние потока из другого потока?
- 13. shared_from_this() из другого потока (функция потока элемента)
- 14. Полупрозрачный пользовательский контроль
- 15. Контроль потока Практика
- 16. Сложный контроль потока
- 17. Python непонятный контроль потока
- 18. контроль потока и обещаний
- 19. Совместное использование объекта и контроль выполнения потока из основного потока
- 20. Исключение из потока - Пользовательский ввод
- 21. Обновить пользовательский интерфейс из потока
- 22. Как растрировать вид из другого потока?
- 23. JMF. Создайте новый пользовательский streamdatasource
- 24. Пользовательский контроль BorderThickness
- 25. Пользовательский контроль как владелец
- 26. Пользовательский контроль мастера
- 27. iOS update UI из другого класса/потока
- 28. Пользовательский контроль не отображается
- 29. Пользовательский контроль DataBinding wpf
- 30. Пользовательский контроль UIPicker IOS
В моих Winforms я включил функцию, которую я вызываю из потока .. в нее я включил следующий код: panel6.BeginInvoke (new Action (() => { controlAtentionare ca = new controlAtentionare (данные, severitate, locatie, alarma, descriere, true); ca.Location = new Point (0, this.Controls.Count * ca.Height); this.panel6.Controls.Add (ca); MessageBox. Show («LALA»); })); – Alex
Появляется предупреждение «lala», но мой элемент управления не добавлен – Alex
Genius! Удивительное решение на месте. В некоторых случаях я ненавижу создание дополнительных методов для вызова, даже если это небольшой процесс. Большое спасибо, узнал что-то новое :). – C4u