通过不同的button在同一panl里加载不同winfrom 
当点击时,页面闪动,问怎么消除这种闪动
我button下的代码:
private void button2_Click(object sender, System.EventArgs e)
{
   showStatPage1();
}
private int nPage=-1;
private static UserStatPage1 myform1=new UserStatPage1();

private void showStatPage1()
{
 this.panelContainer.Controls.Clear();
 myform1.TopLevel=false;    
 myform1.Parent=this.panelContainer;
 myform1.Show();
 myform1.Size=this.panelContainer.Size;
 nPage=1;
}

解决方案 »

  1.   

    建议你在你的panl里加载Control。
    panl.Controls.Add(YouControl);
      

  2.   

    myform1.Show(); 放在后面试试? 可能还是大小变动引起的闪动.
      

  3.   

    .NET下就是有一堆闪烁问题。等设好全部属性后再来设置Visibled
      

  4.   

    试试加入:
    this.SuspendLayout();this.panelContainer.Controls.Clear();
    myform1.TopLevel=false;
    myform1.Parent=this.panelContainer;
    myform1.Size=this.panelContainer.Size;
    myform1.Show();
    nPage=1;this.ResumeLayout(false);
      

  5.   

    myform1.Show();
    换成
    myform1.CreateControl();
    还有就是把你的myform1封装成UserControl
      

  6.   

    它只在点击按钮的瞬间,闪了一下
    我觉得问题就在于  this.panelContainer.Controls.Clear();
             清空panl里的winfrom  然后在加载winfrom,这个过程有没有什么方法控制
    比如,我在一个主窗体下挂一个窗体,如vs.net中的工具箱窗体
    可以用  this.SuspendLayout();this.ResumeLayout(false);
      

  7.   

    noky(孤狼傲血) 
    如何把myform1封装成UserControl
      

  8.   

    那么你可以重写OnPaint,设一个变量IsClear.在OnPaint里面判断,如果为true,不调用基类的OnPaint。
      

  9.   

    重绘就是会闪的。除非你重写自己的OnPaint。
      

  10.   

    将myform1封装成UserControl
    就是创建自定义控件。然后在panel里添加它。
      

  11.   

    具体的,myform1怎么封装自定义控件
    我还真不知如何去做,谁能给我点意见