zheng_hq 发表于 2012-6-23 17:55:00

progressbar怎么写呢?



想实现上图的效果


在我的“设计”界面,添加了一个 timer


public partial class frmPross : Form
    {
      public frmPross()
      {
            InitializeComponent();
            timer1.Enabled = true;
            progressBar1.Visible = true;
      }

private void timer1_Tick(object sender, EventArgs e)
      {
            if (this.progressBar1.Value < this.progressBar1.Maximum)
            {
                this.progressBar1.PerformStep();
            }
            else if (this.progressBar1.Value == this.progressBar1.Maximum)
            {
                this.progressBar1.Value = 0;
            }
      }



但在调试的时候,却是这样的效果,如下图



请问我错在哪呢? 谢谢

zheng_hq 发表于 2012-6-24 22:06:00

Carl 发表于 2012-6-25 09:03:00

timer1_Tick是工作在另外一个线程里的,如果要在其中修改progressBar1的Value,要使用Control.BeginInvoke方法进行异步调用。请查阅MSDN。

zheng_hq 发表于 2012-6-27 18:17:00

zheng_hq 发表于 2012-6-30 09:32:00





private void radioButton2_CheckedChanged(object sender, EventArgs e)
{
   Control.CheckForIllegalCrossThreadCalls = false;
   frmPross pross = new frmPross();
   pross.Show();
   ThreadPool.QueueUserWorkItem(p =>
   {
         if (radioButton2.Checked)
         {
             //单元格数值计算,单元格填充
          }
      else{}
      this.Invoke((MethodInvoker)(() => pross.Close()));
      });
}


这样写,之后,又出现了如上图的 报错

Carl 发表于 2012-7-2 09:12:00

回复 5楼zheng_hq的帖子

请把Visual Studio中菜单栏Debug->Exceptions弹出的对话框中Thrown一列的CheckBox全部打勾,点OK再运行你的程序,你自己就可以看到什么地方出错了。
页: [1]
查看完整版本: progressbar怎么写呢?