2014-12-16 6 views
0

Мне нужна помощь в том, что я не могу решить.Как показать форму только при загрузке данных?

У меня Windows Form с DataGridView, который заполнен большим количеством данных. Эти данные хранятся в базе данных SQL Server и извлекаются простой частью кода ADO.NET.

Я уже использую класс BackGroundWorker для выполнения такого рода операций, но форма все еще зависает на 1-2 секунды.

Есть ли способ отсрочить показ формы? Как показать форму только тогда, когда все данные загружены? Я попытался сделать его невидимым или использовать метод Hide() и Show(), но до сих пор не имеет никаких результатов.

+3

показать нам ваш рабочий код. –

+0

Привет Mo. Спасибо за ваш ответ. Код BackGroundWorker очень прост. Я вызываю метод, который заполняет список привязки и устанавливает его в DataSource моего DataGridView. – Nicola

+0

Вероятно, вы не хотите ждать, пока данные будут загружены, прежде чем вы покажете форму. Пользователям будет менее неприятно видеть пустую форму, которая затем заполняется, чем для того, чтобы удивляться, почему на экране ничего не появляется. – Rikalous

ответ

0

Удалить InitializeComponent(); из конструктора формы и вызвать этот метод, когда данные загружены

+0

Я не могу этого сделать, потому что мне нужны все элементы управления моей формы. – Nicola

+0

@Dr_klo, что заставляет вас думать об этом это хорошая идея? –

+0

@MoPatel Случайный ответ! .. :) – Nicola

0

Я нашел простую работу вокруг. Измените модификаторы BackGroundWorker на общедоступные. Создайте экземпляр формы, запустите Form.CreateControl() и вызовите метод BackGroundWorker.RunWorkerAsync(). В событии DoWork я поставил: получение данных и совокупность элементов управления (DataGridView, combobox и текстовое поле). В RunWorkerCompleted только метод Form.Show(). Вот и все. Это хорошее решение?

Смежные вопросы