Devexpress Winforms - 在将一种形式转换为另一种形式时,形式会破裂
Devexpress Winforms - Forms are fractured while transition one form to another
我正在为我的项目使用 Devexpress winform。简单来说就是三种形式。第一个是MainForm
,用了MdiParent
,第二个是FormArticles
,把关于法律的文章列成GridControl
。最后是FormArticleView
,将查看选中的文章变成pdfViewer
控件。在将 Mdi 子表单和文章加载到 Mdi 子表单 FormArticles
之一时,我设法使用了 documentManager
和 SplashScreenManager
。这是我的代码:
public prjLibrary()
{
InitializeComponent();
var frm = new FormArticles{ MdiParent = this, Dock = DockStyle.Fill };
frm.Show();
}
在将一种形式转换为另一种形式时,形式会断裂,并在加载后固定。这是我的截图:
这是固定视图:
如何在表单转换时修复破碎的视图?
这是因为当第一个屏幕截图中的表单获得焦点时,控件必须在其 Paint 事件中呈现。这似乎需要一些时间,但您可以看到断裂的文本显示在我认为放置底层控件(单选按钮、文本框、标签)的矩形中。因此,当任何其他调用阻塞线程时,它们尚未呈现并且尚未准备好。我认为问题在于您在主窗体的构造函数中创建了一个新窗体。
无论如何,在 UI 等待响应的后台线程中执行繁重的任务(这似乎会阻止控件的绘制)是一种很好的做法。如果这太难做到,请在 UI 显示给用户后尝试这样做。这可能是 OnLoad 事件,甚至是 OnShown 事件。
请注意,我不想鼓励您将任何业务代码写入 UI 层,但这似乎不是这里的问题。
我正在为我的项目使用 Devexpress winform。简单来说就是三种形式。第一个是MainForm
,用了MdiParent
,第二个是FormArticles
,把关于法律的文章列成GridControl
。最后是FormArticleView
,将查看选中的文章变成pdfViewer
控件。在将 Mdi 子表单和文章加载到 Mdi 子表单 FormArticles
之一时,我设法使用了 documentManager
和 SplashScreenManager
。这是我的代码:
public prjLibrary()
{
InitializeComponent();
var frm = new FormArticles{ MdiParent = this, Dock = DockStyle.Fill };
frm.Show();
}
在将一种形式转换为另一种形式时,形式会断裂,并在加载后固定。这是我的截图:
这是因为当第一个屏幕截图中的表单获得焦点时,控件必须在其 Paint 事件中呈现。这似乎需要一些时间,但您可以看到断裂的文本显示在我认为放置底层控件(单选按钮、文本框、标签)的矩形中。因此,当任何其他调用阻塞线程时,它们尚未呈现并且尚未准备好。我认为问题在于您在主窗体的构造函数中创建了一个新窗体。
无论如何,在 UI 等待响应的后台线程中执行繁重的任务(这似乎会阻止控件的绘制)是一种很好的做法。如果这太难做到,请在 UI 显示给用户后尝试这样做。这可能是 OnLoad 事件,甚至是 OnShown 事件。
请注意,我不想鼓励您将任何业务代码写入 UI 层,但这似乎不是这里的问题。