我是在tree的afterselect事件中,利用timer的tick事件来显示进度条。但是进入到tick事件中。timer.enabled=true已经执行了,但是就是无法执行tick事件。
    当我在afterselec事件中执行timer.enabled=true,不执行timer.enabled=false,那进度条可以显示,这是什么原因呢?      private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
        {
          timer1.Enabled = true;
          //程序其他部分
          。
          //
          timer1.Enabled = false;
         }

解决方案 »

  1.   

    你中间的执行太快了没给timer显示的机会。
      

  2.   

    timer启动,还没进入tick,就被disable了
      

  3.   

    使用System.Threading.Timer看看
    可能你的程序消息队列太长了,导致timer消息被延后
      

  4.   

    或者手动触发下Tick事件看看
    timer1_Tick(timer1, EventArgs.Empty);
      

  5.   

    貌似只看到你设置timer的enable,没设置启动啊
    timer1.Start();
    启动timer
      

  6.   

    估计还是进度条显示的代码有问题。另外 winform timer 的精度大概是55ms左右,再小也没用了。
      

  7.   

    刚才设置了,还是没用
    而且,只要我在事件中,不设置timer.enabled=false,进度条就能执行。
    关键是,我在timer.enabled=true这里设置了断点后,发现改句能够显示进度条
      

  8.   

    实际上就是:
        timer1.Enabled = true;
      //程序其他部分
      。
      //
      timer1.Enabled = false;如果没有 timer1.Enabled = false;那timer的tick事件就能执行,如果两个都在的话,就不能进入到tick事件中。我是一新手,盼指教!!
      

  9.   

    timer设置了timer1.Enabled = true;
    计时器就开始工作了,无需start的
      

  10.   

    楼上正解。你的主线程都被timer开启和关闭之间的代码占用了,所以不会显示。只能新开线程用来显示。