【问题标题】:Displaying child form immediately after MDI form is completely displayedMDI 窗体完全显示后立即显示子窗体
【发布时间】:2015-08-10 07:39:47
【问题描述】:

我的 MDI winform 带有一个显示图片的顶部面板和一个从左侧数据库填充的导航菜单。我想在显示 MDI 表单后立即显示默认子表单。在显示所有内容之前,我已经使用了 DevExpress WaitForm。但是,在子窗体完全显示之前,顶部面板保持空白。在显示 MDI 的每个组件后,我该怎么做才能显示子窗体。我尝试了线程,但没有弄清楚如何正确管理它。非常感谢您的帮助。

谢谢

【问题讨论】:

  • 子窗体在做什么阻止MDI窗体的绘制?
  • 子窗体包含一个从数据库生成报表的xtraReport控件
  • 使用闪屏来掩盖丑陋的初始化工件。
  • 事实上,子窗体有一个 WaitForm,它是一个挂起所有东西的窗体。有什么想法吗?

标签: c# multithreading winforms mdi


【解决方案1】:

子窗体包含一个从数据库生成报告的 xtraReport 控件

听起来您的子窗体在获取数据库数据和生成报告时阻塞了主窗口。

考虑使用另一个线程从数据库中获取数据。获得所有数据后,让 UI 线程在 xtraReport 控件上设置数据源属性(或等效属性)。

你可以使用线程:

  • 显式Thread(不推荐)
  • Task 虽然您可能需要线程编组到您的 UI 线程
  • 一种async 方法,您可以使用await(推荐)。这使得在另一个线程上完成工作变得更加容易,然后自动将结果编组到您的 UI 线程,您可以在其中更新 xtraReport

【讨论】:

    猜你喜欢
    • 2020-05-31
    • 1970-01-01
    • 1970-01-01
    • 2014-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多