可以随意指定一个LABEL中,实现进度显示, 进度条是“。”表示,我写了一个用TIMER控制的,进度开始,执行目标,进度终止,但时间不均匀,感觉要等到目标执行完毕才开始显示进度,并且一下到底,几乎看不到“。”不断增加的过程,请高手指路

解决方案 »

  1.   

    自己画比较好,写两个函数,一个是processbarinit(),初始化进度条的起始位置;一个是processbarstep(),每次画一个宽度的线条;
    也别用timer来控制了,因为你也不知道过程需要多久。还是在进度中控制吧在label中先processbarinit(),在进度中,不断的调用processbarstep()
      

  2.   

    用委托或者线程来实现吧,如果执行的目标比较耗时的话用timer控件一样不好做界面的响应,参考:
    http://www.hbjjrb.com/Jishu/C/200905/165862.html
    当然你可以不用进度条控件,直接修改label的text就OK了
      

  3.   

    是不是没有加上Application.DoEvent();
    每次改变进度条的大小,都要调用Application.DoEvent();
    的好吧。
      

  4.   

    多线程    单开一个线程用于更新Label
      

  5.   


    我使用timer完成的。
    我不是连续的“。”来表述的,你这样显示不太好确定任务的进度,另外你说一下到底,说明你任务太重,
    阻止了Timer的运行,建议你用Thread吧。
    我是这样显示:
    “。”
    “。。”
    “”
    “。”
    “。。”
    “”
    然后在重复这个过程
    “。”
    “。。”
    “”
    “。”
    “。。”
    “”
      

  6.   


              //想要显示的额外信息
                var preDefineMessage = "Working";
                //用来显示进度的Label
                var percentLabel  = new Label();
                //百分比,按0~10划分
                var percent = 0;
                //Timer
                var timer = new Timer();
                timer.Tick += delegate
                {
                    percentLabel.Text = preDefineMessage.PadRight(preDefineMessage.Length+(++percent),'.');
                    if(percent % 10 == 0)
                    {
                        percent = 0;
                    }
                };
                timer.Start();
      

  7.   

    nod,也可以使用backgroundworker来完成。比直接使用线程方便些
      

  8.   

    http://www.codeproject.com/KB/vb/Label_with_ProgressBar.aspx