c#加载界面的时候会闪动,特别是控件位置。。

时间:2021-10-01 12:10:41
加载某个界面的时候,由于我界面上控件比较多,导致开始运行的时候界面加载速度与控件加载速度不一致,控件位置未加载好的时候呈白色。我想问如何让整个winform的一个界面全部加载完毕后再一起显示。。

13 个解决方案

#1


去了解一下线程!!回复内容太短了! 

#2


        private void InitializeComponent()
        {
             this.SuspendLayout();

            this.components = new System.ComponentModel.Container();
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.Text = "Form1";

             this.ResumeLayout();
        }

先this.SuspendLayout();临时挂起控件的布局逻辑,等所有控件的设置都完成后再this.ResumeLayout();恢复正常的布局逻辑,

#3


在form_shown事件里写,而不是form_load里写
或者把耗时的代码放在线程里,后台去处理

#4


引用 3 楼 deyter 的回复:
在form_shown事件里写,而不是form_load里写
或者把耗时的代码放在线程里,后台去处理
应该是这样

#5


DoubleBuffered = True

#6


控件太多了,这个目前来看尚没有太好的解决办法。

#7


这个问题可以制作一个类似flash的全屏loading界面遮住你的截面,显示正在加载进度和资源等,起码让用户感觉不到停顿.

具体我有一个这种控件的类,需要可以向我索取!

#8


感觉应该是你Load的时候处理了太多的东西造成的

#9


引用 2 楼 xingyuebuyu 的回复:
        private void InitializeComponent()
        {
         this.SuspendLayout();

            this.components = new System.ComponentModel.Container();
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.Text = "Form1";

         this.ResumeLayout();
        }

先this.SuspendLayout();临时挂起控件的布局逻辑,等所有控件的设置都完成后再this.ResumeLayout();恢复正常的布局逻辑,


这个方法可以尝试,应该可以满足要求哦。

#10


   private void InitializeComponent() 
        { 
          this.SuspendLayout(); 

            this.components = new System.ComponentModel.Container(); 
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 
            this.Text = "Form1"; 

          this.ResumeLayout(); 
        } 

先this.SuspendLayout();临时挂起控件的布局逻辑,等所有控件的设置都完成后再this.ResumeLayout();恢复正常的布局逻辑,

#11


不是很明白1楼的意思,2楼效果貌似不明显。。

#12


来看看.......

#13


嗯,深思了一下,挂起挺好,flash loading...知道借鉴

#1


去了解一下线程!!回复内容太短了! 

#2


        private void InitializeComponent()
        {
             this.SuspendLayout();

            this.components = new System.ComponentModel.Container();
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.Text = "Form1";

             this.ResumeLayout();
        }

先this.SuspendLayout();临时挂起控件的布局逻辑,等所有控件的设置都完成后再this.ResumeLayout();恢复正常的布局逻辑,

#3


在form_shown事件里写,而不是form_load里写
或者把耗时的代码放在线程里,后台去处理

#4


引用 3 楼 deyter 的回复:
在form_shown事件里写,而不是form_load里写
或者把耗时的代码放在线程里,后台去处理
应该是这样

#5


DoubleBuffered = True

#6


控件太多了,这个目前来看尚没有太好的解决办法。

#7


这个问题可以制作一个类似flash的全屏loading界面遮住你的截面,显示正在加载进度和资源等,起码让用户感觉不到停顿.

具体我有一个这种控件的类,需要可以向我索取!

#8


感觉应该是你Load的时候处理了太多的东西造成的

#9


引用 2 楼 xingyuebuyu 的回复:
        private void InitializeComponent()
        {
         this.SuspendLayout();

            this.components = new System.ComponentModel.Container();
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.Text = "Form1";

         this.ResumeLayout();
        }

先this.SuspendLayout();临时挂起控件的布局逻辑,等所有控件的设置都完成后再this.ResumeLayout();恢复正常的布局逻辑,


这个方法可以尝试,应该可以满足要求哦。

#10


   private void InitializeComponent() 
        { 
          this.SuspendLayout(); 

            this.components = new System.ComponentModel.Container(); 
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 
            this.Text = "Form1"; 

          this.ResumeLayout(); 
        } 

先this.SuspendLayout();临时挂起控件的布局逻辑,等所有控件的设置都完成后再this.ResumeLayout();恢复正常的布局逻辑,

#11


不是很明白1楼的意思,2楼效果貌似不明显。。

#12


来看看.......

#13


嗯,深思了一下,挂起挺好,flash loading...知道借鉴