private void Form1_Load(object sender, EventArgs e)
        {
            toolStripProgressBar1.Maximum = 100;
            toolStripProgressBar1.Value=1;
            while (toolStripProgressBar1.Value <100)
            {
                toolStripProgressBar1.Value = toolStripProgressBar1.Value+1;
                if (toolStripProgressBar1.Value == 99)
                {
                    toolStripProgressBar1.Value = 1;
                } 
            }
        }
如果是对的话为什么vs2010里面启动调试winform窗口显示不出来呢?
如果把 if (toolStripProgressBar1.Value == 99)
                {
                    toolStripProgressBar1.Value = 1;
                } 
这段注释掉就一切正常,不知道为什么。。

解决方案 »

  1.   

    靠,到99就toolStripProgressBar1.Value = 1;那不死循环在while了吗
      

  2.   

    就算是死循环那为什么winform窗体都显示不出来?
      

  3.   

    这个地方死循环,当然显示不出来了,你就去掉那句,放到while循环外面去
      

  4.   

            private void Form1_Load(object sender, EventArgs e)
            {
                //运行timer控件
              //  this.timer1.Enabled = true;
               // this.timer1.Interval = 1;
                toolStripProgressBar1.Maximum = 100000;
                toolStripProgressBar1.Value=1; 
                
                while (toolStripProgressBar1.Value <100000)
                {
                    toolStripProgressBar1.Value = toolStripProgressBar1.Value+1;
                   
                }
                if (toolStripProgressBar1.Value == 99)
                {
                        toolStripProgressBar1.Value = 1;
                } 
            }
    这样子吗?但是进度条就不循环了啊。一直都是满的
      

  5.   

     Form1_Load   -->  activated
      

  6.   

    加一个timer控件。设置上时间间隔。在timer控件的方法里设置进度条循环,每次执行把滚动条的value加1。你先把timer控件设置成30毫秒试试。看效果不理想在调一调。
      

  7.   

    你想看见循环效果,就不要把这些代码放在load事件里,你放在一个button_click事件里就行了
      

  8.   

    多开一个线程来实现,把实现放在线程里去做,然后在form_load启动线程,注意跨线程调用控件
      

  9.   

    我加了个button循环是可以循环了,但是那个窗体直接未响应只好在任务管理器里把它关掉
      

  10.   

    1.用另外一个线程来循环更新进度条
    2.将value暴露,让外面可以访问,可以更改,这样随时显示/关闭进度条
      

  11.   

    public Form1()
            {
                InitializeComponent();
                Control.CheckForIllegalCrossThreadCalls = false;
                
            }        private void Form1_Load(object sender, EventArgs e)
            {            Thread t1 = new Thread(new ThreadStart(DoRecycle));
                t1.Start();        }        private void DoRecycle()
            {
                pb.Maximum = 100;
                pb.Visible = true;
                pb.Value = 1;
                while (true)
                {
                    pb.Value++;
                    
                    if (pb.Value == 100)
                    {
                        pb.Value = 1;
                    }
                    Thread.Sleep(100);
                }
            }
      

  12.   

    像楼主把写在load事件或者按钮click事件直接执行while会导致程序假死,UI主线程一直在执行你的while,跳不出这个循环,根本就没有机会去做其他的事情,想要实现这个效果要再开一个线程去处理进度条(就像16楼),或者用一个System.Windows.Forms.Timer 控件实现,建议楼主去看看多线程、同步、异步
      

  13.   

    可以不加timer也可以,单独启动一个线程。如果这个还需要解释。那咱这c#学的还没入门。革命尚未成功,同志还需努力!!!