none
求助“进度条”的实现 RRS feed

  • 问题

  • 请教一下进度条(ProgressBar控件)的实现。之前没有接触过进度条,不知道怎么实现。

    我有多个数据处理的Form,而且每次处理数据的时间都不确定。我是想在每个Form处理数据时弹出进度条(ProgressBar控件的属性Style = Marquee,windows登录界面的那种模式),数据处理完后隐藏进度条。

    我一个想法是新建一个子窗口,添加一个Label(显示“正在处理数据...”字样)控件和一个ProgressBar控件。在其它处理数据的Form中调用这个子窗口来显示进度条,数据处理完后隐藏进度条。这里我又出来问题——显示进度条的同时该子窗口的框框也被显示出来了,这样不美观。

    请教教我怎么做!请说详细一点(比如哪些属性要特别注意改的)或者给个完全的例子,我比较笨,不容易理解。

    谢谢~

    2010年4月19日 6:24

答案

  • 你好!

        你再仔细阅读一下代码,或是查看一下其他属性设置!

       我用你的代码是可以正常显示进度条的动画的!

       另外,这两行可以去掉,比较多余,Close会在内部调用Dispose方法的,sf=Nothing也没有比要,当后面不在使用sf的情况下,垃圾收集器就认为这个对象是不可达的(也就是可以回收的),不用手动来做这个工作!

       sf.Dispose()
    sf = Nothing


    周雪峰
    2010年4月27日 9:25
    版主

全部回复

  • 请懂得的老师指导指导。。。
    2010年4月20日 2:25
  • 窗口边框可以通过设置窗体的FormBorderStyle属性,改为None就可以隐藏标题栏了
    共同努力,共同提高
    kaedei#live.cn My BLOG
    2010年4月20日 15:36
  • 我在调用带ProgressBar控件的窗体显示进度条时,只显示了一个白色的影子,这是怎么回事?这个跟数据处理的时间长短没关系的吧?我这里处理数据的时间也就1-5秒之间。

    2010年4月22日 5:55
  • 其实你可以自己做一个进度条

    利用Shape控件,计算好长度
    也可以把两个Shape放在一个UserControl中,效果不错

    2010年4月22日 6:03
  • 每个数据表的大小不一样,所以每次处理数据的时间不一样。。。

    这样可以吗?

    还有,没用过Shape控件,没看到。。。

    2010年4月22日 7:05
  • 单线程显示的进度条吧~
    2010年4月22日 12:05
  • 单线程显示的进度条吧~
    能否给个详细的说明?
    2010年4月23日 7:32
  • 你好!

         你在显示这个子窗体以后,使用childForm.Refresh()刷新一下子窗体!


    周雪峰
    2010年4月25日 7:53
    版主
  • 老师,你好!

    帮我看看是怎么回事:

    进度条的界面和上面主题一样,然后在ProgressBar控件中写成这样:

    Public Class ProgressForm
      Private Sub ProgressBar1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ProgressBar1.Click
        With ProgressBar1
          Application.DoEvents()
        End With
      End Sub
    End Class
    

    然后在主窗口的事件处理中是这样:

      Private Sub btnDataAnalysis_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDataAnalysis.Click 
    
        ''显示进度条
        Dim sf As ProgressForm = New ProgressForm()
        sf.Show()
        ProgressForm.Refresh()
    
       '事件处理......
    
        ''关闭隐藏进度条
          sf.Close()
          sf.Dispose()
          sf = Nothing
    
    End Sub

    可是在处理数据时还是不能显示进度条(只显示一个白色的影子)。

    这是怎么回事?

    2010年4月26日 7:27
  • 你好!

         我用你的代码这里可以显示动画效果啊!你确认把Style设置成Marquee了吗?


    周雪峰
    2010年4月26日 12:24
    版主
  • 你好!

         我用你的代码这里可以显示动画效果啊!你确认把Style设置成Marquee了吗?


    周雪峰


    周老师,你好!

    我确认把Style设置成Marquee了。

    我在新创建的平台中也可以显示动画效果。

    但,在现有的工程中就无法显示效果...纠结中...

    2010年4月27日 6:04
  • 你好!

        你再仔细阅读一下代码,或是查看一下其他属性设置!

       我用你的代码是可以正常显示进度条的动画的!

       另外,这两行可以去掉,比较多余,Close会在内部调用Dispose方法的,sf=Nothing也没有比要,当后面不在使用sf的情况下,垃圾收集器就认为这个对象是不可达的(也就是可以回收的),不用手动来做这个工作!

       sf.Dispose()
    sf = Nothing


    周雪峰
    2010年4月27日 9:25
    版主
  • 好的,谢谢周老师!我再试试。
    2010年4月28日 5:18