客户嫌我们的系统在页面切换时控件闪得厉害,我们控件是放在top、fill、bottom三个panel上,现在在改panel已经来不及了,各位大虾有没有什么好办法能解决这个问题

解决方案 »

  1.   

    不太明白你的意思,用TabControl试试?把控件放在每个TabPage上面?
      

  2.   

    突然想到,可能是dock属性造成的
    或者你使用了datarid,并且设置了dock属性?
      

  3.   

    将其DoubleBuffered置为ture试试。
      

  4.   

    1.開啟雙緩沖DoubleBuffered
    2.數據刷新采用梆定數據源
    3.修改顏色,不要差別太大
      

  5.   

    DoubleBuffered置为ture也不好用,客户要求dataGrid必须充满中间的panel,看来只能手动设置panel的大小了。上MSDN查了一下,看来这是微软Form的普遍问题,这点微软做得不太好
      

  6.   

    你在页面切换的时候锁定窗体,等更新完毕后显示
    [System.Runtime.InteropServices.DllImport("user32.dll", EntryPoint = "LockWindowUpdate")]
            public static extern int LockWindowUpdate(IntPtr hwndLock);调用
    LockWindowUpdate(tabControlPanel2.Handle);
        
                LockWindowUpdate((IntPtr)0);
      

  7.   

    datagrid,如果设置了dock属性后,窗体切换会很奇怪的问题,特别是多个mdi子窗体的那种情况可以考虑在失去焦点和获得焦点时,改变dock属性,当然还需要在改变时根据实际大小来调整宽与高
      

  8.   

    是不是C#做Form本身就慢?Java做Form也没有这么闪
      

  9.   

    private void Frm_Load(object sender, System.EventArgs e)
     {
      this.SuspendLayout();
       ....
      this.ResumeLayout(false);
    }