0

Работа с DevExpress 2012 по объему 2.10 C# сверху VS 2010C# полностью загружая WinForm, не показывая его (VS2010)

Первый вопрос, кажется, было неясно ... Так позволяет очистить его немного (или попробуйте хотя бы)!

Мы строим MainForm с лентой, содержащей много кнопок. Каждая кнопка в ленте отключается, пока их соответствующее состояние не будет «готово к включению». «готовность к включению» зависит от одной вещи: WinForm_Popup, связанный с кнопкой, был полностью построен, включая извлечение данных и конструкцию DevExpress.ExpressApp.ListView.

  1. Извлечение данных из базы данных занимает менее 0,1 секунды
  2. Назвав WinForm_Popup.Show() takles в течение 15 секунд

Мы пытались поставить это в тему или задачи, без успеха : Он сбой в WinForm_Popup.Show() с исключением, связанным с событием DragDrop.

Что я знаю, метод Show() занимает много времени, но я не знаю, что происходит в этом методе, но создав DevExpress.ExpressApp.ListView, который следует удалить из Show (или сделайте это в Задаче или Thred, возможно).

Или, другими словами, пользовательский интерфейс WinForm_Popup полностью построен, как при его показе, но делает это асинхронно (например, в отдельной задаче).

Любая идея, совет, помощь, ссылка, предложение, подсказка ... Любая «вещь»?

+0

Попробуйте измерить, сколько времени потребуется для извлечения данных, если вы сначала перечислите его. –

+0

euw, уже сделал, может быть, я был неясен, но я написал «менее 0,1 сек» ... на самом деле, форматирование, похоже, было «повреждено»! – menssana

+0

Я знаю, что вы это сделали, но я думаю, что данные фактически натягиваются, когда форма отображается из-за ленивой загрузки. –

ответ

1

Сделайте новый вид и оставьте это. В файле program.cs измените основную форму на новую форму. Затем сделайте новую форму конструктора выглядеть так:

public newForm() 
     { 
      this.Hide(); 
      Thread backTh = new Thread(() => 
       { 
        MainForm mf = new MainForm(); 
        mf.Show(); 
       }); 
      backTh.Start(); 
     } 
+0

Мне определенно нужно переписать мой вопрос, проблема не в самой MainForm, а в «всплывающих» WinForms, содержащих ListView. Кажется, что время занимает «всплывающее» WinForm.Show(), as: данные уже загружены, ListView уже создан (новый), а ListView уже добавлен в WinForm. Поэтому, когда мы вызываем WinForm.Show(), для отображения требуется более 15 секунд, после чего я могу скрыть и показать очень быстро. Я хочу показать это в первый раз так же быстро, как если бы это было во второй раз ... – menssana

+0

Если вы загружаете некоторую информацию, вы не можете заставить ее загрузить ее за одну секунду. Obviosly второй раз, когда информация уже добавлена, поэтому она быстро –

+0

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

0

Я хотел бы пойти на противоположный подход, который обычно используется в медленных системах загрузки, как веб-браузер. Почему бы вам не быстро загрузить форму, а затем использовать поток, чтобы заполнить ваш вид сетки с медленной загрузкой?

Таким образом, у вас могут быть как вращающиеся песочные часы (или что-то меньшее 1995 года), которые будут сообщать вашим пользователям, что данные загружаются.

+0

Спасибо, Эрик, мне нравится твоя идея, поскольку мы обсуждали этот подход на прошлой неделе ... Но пока это еще недостаточно. Я скажу вам, почему в следующем комментарии. – menssana

+0

Задача здесь состоит в том, чтобы предложить 7 всплывающих окон (над лентой OfficeWood), в каждом из которых ListView отображает связанные данные с тем, на что он смотрит (в режиме реального времени). Поэтому, когда пользователь решает отобразить клиента, 7 ListViews (на самом деле, кнопки 7 лент сначала будут отключены, данные будут восстановлены, ListViews заполнены, а затем кнопки на ленте снова активируются, чтобы пользователь может открыть всплывающее окно (из последних 50 заказов в качестве примера) и проконсультироваться с данными менее чем за секунду ... – menssana

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