Динамическое расширение/загрузка формулыC#

Место общения программистов C#
Anonymous
Динамическое расширение/загрузка формулы

Сообщение Anonymous »

У меня есть анкета, подобная формуле, с (в зависимости от конфигурации) от 3 до n страниц, реализованная с помощью вкладок. Создание экземпляра происходит ужасно медленно, но это, несомненно, вызвано тем, что количество элементов управления может легко достигать 100 (например, 13 вопросов с 1 ярлыком и 7 переключателями каждый) на одной странице.
Для ускорения Я думал о создании только первой страницы, и когда форма видна и пользователь работает над первой страницей, то динамически создает другие страницы в фоновом режиме.
Я пробовал это с фоновым рабочим в тестовой форме, и это работает (я немного удивлен, лол). Можно ли/должны ли создавать элементы управления в потоках, отличных от ui? я добавил кнопку в свою тестовую форму, чтобы изменить цвет метки и текст метки, созданной в фоновом рабочем режиме, и это тоже работает...? До сих пор удивлен 😅

Код: Выделить всё

private void backgroundWorker1_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e)
{
Thread.Sleep(5000);
var label = new Label();
label.BackColor = Color.Red;
label.Text = "test";
label.TextChanged += (_, _) => MessageBox.Show("Whaaaat?");
backgroundWorker1.ReportProgress(0, label);
}

private void backgroundWorker1_ProgressChanged(object sender, System.ComponentModel.ProgressChangedEventArgs e)
{
Label label = (Label)e.UserState;
this.Controls.Add(label);
}
Это хороший способ сократить время загрузки/создания экземпляров форм со множеством элементов управления?

Подробнее здесь: https://stackoverflow.com/questions/791 ... a-formular

Вернуться в «C#»