如何使窗体的控件至少在显示窗体的框架之前不加载?



我有一个C#Winforms表单,它有大量的自定义控件,大约需要10秒才能加载。现在,当我点击菜单项打开我的表格时,菜单会冻结10秒,然后表格就会弹出,随时可以使用。我想做的是:一旦您单击相应的菜单项打开我的表单,我就想立即显示该表单,但可能只有红色背景,上面没有控件。然后表单可以开始尝试加载我的所有控件。通过这种方式,用户可以看到他们的鼠标点击打开了新表单,看起来整个应用程序并没有冻结。将其移动到新线程不是一种选择。

您是否尝试将用户控件放在一个单独的用户控件中,然后在Shown事件中实例化它,然后将其添加到表单中。

即类似于的东西

Form1

public partial class Form1 : Form
{
UserControl1 usr;
public Form1()
{
InitializeComponent();
}
private void Form1_Shown(object sender, EventArgs e)
{
usr = new UserControl1();
usr.Dock = DockStyle.Fill;
panel1.Controls.Add(usr);
}
}

用户控制1

public partial class UserControl1 : UserControl
{
public UserControl1()
{
System.Threading.Thread.Sleep(10000);
InitializeComponent();
}
}

最新更新