Devexpress Winforms - Формы разрушаются при переходе одной формы в другую

Я использую Winform Devexpress для моего проекта. Есть три формы просто. Первый MainForm что использовал MdiParentвторое FormArticles который использовал перечисление статей о законе в GridControl, И последнее FormArticleView который использовал просмотр выбранной статьи в pdfViewer контроль. Мне удалось использовать documentManager а также SplashScreenManager при загрузке форм и статей Mdi Child в одну из форм Mdi Child FormArticles, Вот мой код:

   public prjLibrary()
    {
        InitializeComponent();
        var frm = new FormArticles{ MdiParent = this, Dock = DockStyle.Fill };
        frm.Show();
    }

При переходе с одной формы на другую, форма разрушается и после нагрузки фиксируется. Вот мой скриншот: А вот и фиксированный вид: Как я могу исправить трещиноватый вид при переходе форм?

1 ответ

Решение

Это связано с тем, что когда форма из первого снимка экрана становится сфокусированной, элементы управления должны отображаться в их событии Paint. Кажется, это займет некоторое время, но вы можете увидеть, что разбитый текст отображается в прямоугольниках, где, как мне кажется, размещены основные элементы управления (переключатели, текстовые поля, метки). Таким образом, они еще не обработаны и не готовы к работе, пока любой другой вызов блокирует поток. Я думаю, проблема в том, что вы создаете новую форму в конструкторе mainForm.

В любом случае, рекомендуется выполнять тяжелые задачи (которые, кажется, блокируют рисование ваших элементов управления) в фоновом потоке с пользовательским интерфейсом, ожидающим ответа. Если это слишком сложно, попробуйте сделать это после того, как пользовательский интерфейс будет показан пользователю. Это может быть событие OnLoad или даже OnShown.

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

Другие вопросы по тегам