在启动时加载所有窗体的用户控件

3
我的Winform应用程序有一个带有选项卡控件的主窗体,在每个选项卡中都有一个用户控件。并且每个用户控件都有控件(如DataGridViews等),这些控件在用户控件的Load事件中加载。
我的问题是,我想在我的主窗体显示给用户之前初始化所有这些用户控件。当前,主窗体被显示,当用户单击其中一个选项卡时,用户控件开始运行其Load事件,并且这会使我的主窗体变空直到控件被加载。
因此,我想使用一个Splash屏幕来隐藏所有这些加载,直到所有控件都被加载。我以前使用过Splash屏幕,我知道如何隐藏和显示我的主窗体。关键是在主窗体的Load事件中加载所有用户控件。

你正在专注于解决错误的问题。 "加载控件" 没有任何作用,真正耗费时间的是检索放入网格中的数据。一个明显的解决方法是在工作线程中执行,这样就不会延迟 UI 渲染。下一个明显的解决方法是在构造函数中执行,而不是在加载事件中执行。 - Hans Passant
1个回答

5

您需要循环遍历选项卡控件的每个页面。Winforms仅在首次访问时加载选项卡页面。

for(int i=1; i < tabControlName.TabPages.Length; i++)
    tabControlName.SelectedIndex = i;
tabControlName.SelectedIndex = 0;

更改选定的索引会使选项卡页面加载。

2
太棒了。谢谢! - disasterkid
2
只翻译文本内容:一旦 StackOverFlow 允许我,我将接受它作为正确答案 ;) - disasterkid
我认为应该使用“Count”而不是“Length”。 - Xan-Kun Clark-Davis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接