这个循环进度条程序对吗?
- 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 控件实现,建议楼主去看看多线程、同步、异步