早上好,我有一个包含大量可视控件的表单,因此加载所有窗口都需要一段时间,我认为如果表单UI加载而不显示它并且UI加载所有控件会更好一些,然后显示它,使用户看不到控件的加载。
答案 0 :(得分:0)
如果该表单是您的启动表单,请考虑使用启动画面。
否则,首先尝试查找需要花费一些时间来加载的控件,也许您正在填充列表,获取外部数据...在这种情况下,请使那些初始化异步。
如果只想在加载时使表单不可见,为什么不将表单可见性设置为隐藏并在表单加载事件中显示呢?
答案 1 :(得分:0)
在进行其他处理之前,如何使Winform(及其所有子控件)完全呈现: Immediate display of WinForms using the Shown() event
答案 2 :(得分:0)
通常不是导致此问题的表单上控件的数量,而是在显示表单时通过一种耗时的方法将它们装入值。
因此,您需要完整显示表单,然后才能开始加载数据。
有两种方法可以执行此操作。
Application.DoEvents():
事件中致电FormShown
This.Update();
事件中致电Activated
对于第二种解决方案,您需要声明一个bool变量以用作标志,这样就不必每次都这样做
private bool _firstTime = true;
private void Form1_Activated(object sender, EventArgs e)
{
if (_firstTime)
{
_firstTime = false;
this.Update();
FetchDataAndOtherTimeSpendingStuffNow();
}
}
在两种情况下,请确保仅在完成此操作后才开始加载数据和其他耗时的代码。
这将确保您的表单显示有所有控件,然后才开始使用数据填充控件。