Devexpress Winforms - 在将一种形式转换为另一种形式时,形式会破裂

Devexpress Winforms - Forms are fractured while transition one form to another

我正在为我的项目使用 Devexpress winform。简单来说就是三种形式。第一个是MainForm,用了MdiParent,第二个是FormArticles,把关于法律的文章列成GridControl。最后是FormArticleView,将查看选中的文章变成pdfViewer控件。在将 Mdi 子表单和文章加载到 Mdi 子表单 FormArticles 之一时,我设法使用了 documentManagerSplashScreenManager。这是我的代码:

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

在将一种形式转换为另一种形式时,形式会断裂,并在加载后固定。这是我的截图: 这是固定视图: 如何在表单转换时修复破碎的视图?

这是因为当第一个屏幕截图中的表单获得焦点时,控件必须在其 Paint 事件中呈现。这似乎需要一些时间,但您可以看到断裂的文本显示在我认为放置底层控件(单选按钮、文本框、标签)的矩形中。因此,当任何其他调用阻塞线程时,它们尚未呈现并且尚未准备好。我认为问题在于您在主窗体的构造函数中创建了一个新窗体。

无论如何,在 UI 等待响应的后台线程中执行繁重的任务(这似乎会阻止控件的绘制)是一种很好的做法。如果这太难做到,请在 UI 显示给用户后尝试这样做。这可能是 OnLoad 事件,甚至是 OnShown 事件。

请注意,我不想鼓励您将任何业务代码写入 UI 层,但这似乎不是这里的问题。