有没有办法在显示之前加载所有UI控件?C#winform
我有一个复杂的win表单,有很多控件和庞大的重绘,控件根据用户屏幕调整大小和位置,这会导致在进行渲染和重绘时显示表单 有没有办法在显示之前加载UI并进行准备?我的意思是在整个重新绘制事件完成后显示最终UI 如果使用闪屏,在加载主窗体之前,我应该怎么做 谢谢也许使用和会起作用 从MSDN: SuspendLayout和ResumeLayout 方法串联使用以抑制 当您执行此操作时,会发生多个布局事件 调整对象的多个属性 控制例如,你会 通常调用SuspendLayout 方法,然后设置大小、位置、, 锚点或码头的属性 控件,然后调用 ResumeLayout方法以启用 更改将生效 您可以创建一个“加载”面板,并在加载时临时覆盖整个表单。在调用Form.Show之前,您可以尝试在布局管理器上调用PerformLayout,让他们提前加载布局任务 启动屏幕很容易。您可以只显示最顶端的表单,并在主表单显示完成后关闭它,可能是在激活的事件中。在主表单中:有没有办法在显示之前加载所有UI控件?C#winform,c#,winforms,load,splash-screen,C#,Winforms,Load,Splash Screen,我有一个复杂的win表单,有很多控件和庞大的重绘,控件根据用户屏幕调整大小和位置,这会导致在进行渲染和重绘时显示表单 有没有办法在显示之前加载UI并进行准备?我的意思是在整个重新绘制事件完成后显示最终UI 如果使用闪屏,在加载主窗体之前,我应该怎么做 谢谢也许使用和会起作用 从MSDN: SuspendLayout和ResumeLayout 方法串联使用以抑制 当您执行此操作时,会发生多个布局事件 调整对象的多个属性 控制例如,你会 通常调用SuspendLayout 方法,然后设置大小、位置、
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);
}
即使没有添加初始屏幕,我也发现声明
MyMainForm myform=new MyMainForm()
在应用程序之前加载所有控件会更好
在表单上放置一个面板,并将Dock设置为Fill,使其覆盖整个表单
将“样式”属性设置为“选取框”的进度条放置到面板的中心。这将使它不断滚动
现在,在窗体构造函数(或加载事件处理程序,如果正在使用)的末尾,调用面板的SendToBack()方法以公开完全呈现的控件
谢谢你的回复。SuspendLayout和ResumeLayout方法不起作用,因为大多数ui是由VisualStudio向导创建的,这些方法在表单的代码隐藏中自动使用。我不知道如何添加[“加载”面板]来覆盖表单,但我尝试了PerformLayout,但没有成功。我在表单中有很多自定义用户控件,我发现了双缓冲区。我将用户控件的doublebuffer属性设置为True。现在它工作得更好了。控件在显示之前加载。。。无法显示已卸载/未初始化的控件:)
static void Main( )
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MyMainForm());
}