读书人

这个循环进度条程序对吗?解决思路

发布时间: 2012-04-03 12:38:19 作者: rapoo

这个循环进度条程序对吗?

C# code
  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;
}
这段注释掉就一切正常,不知道为什么。。。。。

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

[解决办法]
多开一个线程来实现,把实现放在线程里去做,然后在form_load启动线程,注意跨线程调用控件
[解决办法]
1.用另外一个线程来循环更新进度条
2.将value暴露,让外面可以访问,可以更改,这样随时显示/关闭进度条
[解决办法]
C# code
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);            }        }
[解决办法]
像楼主把写在load事件或者按钮click事件直接执行while会导致程序假死,UI主线程一直在执行你的while,跳不出这个循环,根本就没有机会去做其他的事情,想要实现这个效果要再开一个线程去处理进度条(就像16楼),或者用一个System.Windows.Forms.Timer 控件实现,建议楼主去看看多线程、同步、异步

读书人网 >C#

热点推荐