我有一个复杂的胜利形式,有很多控件和笨重的重绘,控制调整大小和根据用户屏幕定位,这导致表格在进行一些渲染和重新绘制时显示。
有没有办法加载UI并在显示之前做好准备??我的意思是在整个重绘事件完成后显示最终用户界面。
如果使用启动画面,在加载主窗体之前,我应该怎么做?
谢谢
答案 0 :(得分:4)
也许使用SuspendLayout()和ResumeLayout()会有效。
来自MSDN:
SuspendLayout和ResumeLayout 方法用于串联抑制 你有多个布局事件 调整的多个属性 控制。例如,你会的 通常调用SuspendLayout 方法,然后设置大小,位置, Anchor,或者Dock的属性 控制,然后调用 ResumeLayout方法启用 更改生效。
答案 1 :(得分:1)
你可以创建一个“加载”面板,并在加载时临时覆盖整个表单。您可以在调用Form.Show之前尝试在布局管理器上调用PerformLayout,以使它们能够预先加载布局任务。
启动画面很容易。您可以显示最顶层的表单,并在显示完主表单时将其关闭,也许在Activated事件中。
答案 2 :(得分:1)
在你的主要:
MyMainForm hostInterface;
static void Main( )
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
hostInterface = new HostInterface();
// do some stuff to get the form ready
// here you can optionally instance a splash screen
MySplashScreen splash;
hostInterface.Load += splash.Close(); // <- might not be 100% accurate
splash = new MySplashScreen();
Application.Run(hostInterface);
}
了解这对您有何帮助。不同之处在于您在运行任何内容之前实例化表单。我提出了一个实例化闪屏的选项。
将上述内容与标准的自动生成代码进行比较:
static void Main( )
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MyMainForm());
}
即使没有添加启动画面,我也发现声明MyMainForm myform = new MyMainForm()
在Application.Run(new MyMainForm())
答案 3 :(得分:1)
@Kevin有正确的想法,这是我会用的方法: