先添加了 timer1 private void timer1_Tick(object sender, EventArgs e)
{
if (progressBar1.Value < progressBar1.Maximum)
{
progressBar1.PerformStep();
}
else if (progressBar1.Value == progressBar1.Maximum)
{
progressBar1.Value = 0;
}
}
在 statusstrip1 添加了一个progressbar1,
private void radioButton2_CheckedChanged(object sender, EventArgs e)
{
if (radioButton2.Checked)
{
timer1.Enabled = true;
//这里是大量的单元格数值计算,并填充单元格
}
}
为何切换已经完毕了,progresbar才开始滚动,而且反复滚动,停不下来
{
if (progressBar1.Value < progressBar1.Maximum)
{
progressBar1.PerformStep();
}
else if (progressBar1.Value == progressBar1.Maximum)
{
progressBar1.Value = 0;
}
}
在 statusstrip1 添加了一个progressbar1,
private void radioButton2_CheckedChanged(object sender, EventArgs e)
{
if (radioButton2.Checked)
{
timer1.Enabled = true;
//这里是大量的单元格数值计算,并填充单元格
}
}
为何切换已经完毕了,progresbar才开始滚动,而且反复滚动,停不下来
如果是的话那就是说timer1_Tick在你的UI线程里面 执行大量单元格数值计算的时候线程阻塞 所以没法实时更新你的进度条 等到计算结束 timer1_Tick又再不停的执行 所以停不下来(从名字就可以看出来 Tick差不多就是一直在被触发)
+1,或者加上Application.DoEvents()到循环中处理消息队列中的消息避免假死。
可以这样 private void radioButton2_CheckedChanged(object sender, EventArgs e)
{
if (radioButton2.Checked)
{
Thread thread=new Thread(new ThreadStart(Do));
thread.IsBackground=true;
thread.Start();
}
}private void Do()
{
//这里是大量的单元格数值计算,并填充单元格
progressBar1.Maximum=100;
for(int i=0;i<100;i++)
{
progressBar1.value++;
}
}
里面如何操作,自己写吧
我是用在子窗体 frmPross.cs 里面 添加了一个 progressBar1