Элементы управления, созданные в одном потоке, не могут быть родительскими для элемента управления в другом потоке - C#
Формулировка задачи:
Привет
Есть задача - нужно динамически добавлять компоненты. Все работает хорошо.
Но если добавлять через цикл то начинает зависать форма и элементы не прорисовываются.
Вот что получается пока компоненты добавляются.
http://www.cyberforum.ru/attachment....1&d=1376561587
После добавления всех компонентов получится так.
http://www.cyberforum.ru/attachment....1&d=1376561783
Как можно организовать правильное добавление компонентов без всяких зависаний формы и глюков прорисовки ?
Может как то асинхронно или в отдельном потоке. Нужна помощь, поиск в инете не помог разобраться. Заранее Спасибо Вот код как добавляю компонент.ClassLibrary1.K_v1 tb; public void Add(Image Imegs, string Text1, string Text2, string Text3, string Text4) { tb = new ClassLibrary1.K_v1(); tb.Dock = DockStyle.Top; tb.ForeColor = this.ForeColor; tb.Text1to4(Imegs, Text1, Text2, Text3, Text4); this.Controls.Add(tb); tb.Click += new EventHandler(this.button1_Click); }
Решение задачи: «Элементы управления, созданные в одном потоке, не могут быть родительскими для элемента управления в другом потоке»
textual
Листинг программы
this.Invoke(new MethodInvoker(() => { Button tb = new Button(); tb.Location = new Point(0, i * 30); tb.ForeColor = this.ForeColor; tb.Text = (i + 1).ToString(); this.Controls.Add(tb); }));
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д