progressBar的maxvalue设置成磁盘总大小
minvalue设置成0
以上初始化的时候设置一次,之后不要乱改然后value就设置成当前使用的大小不就行了

解决方案 »

  1.   

    进度就是你创建 文件的大小呀。 你把文件大小累加的值,就是进度值;获取磁盘的大小 就是pb的最大值。
    http://www.cnblogs.com/inforasc/archive/2009/10/12/1582110.html
      

  2.   

    其实你完全没必要每次创建文件都去获取剩余磁盘大小,有什么意义吗
    除非除了你的程序之外,还有别的程序也在不停创建文件,不过那样一来,你获取了也没用.就是一开始运行的时候,获取一下剩余大小,然后把它作为max
    每次创建文件,大小你自己知道,累加到value里
      

  3.   


                long freeSpace = 0;
                DriveInfo drive = new DriveInfo("D");
                freeSpace = (long)drive.AvailableFreeSpace;
                this.progressBar1.Maximum = Convert.ToInt32(freeSpace / 1000);
                ThreadPool.QueueUserWorkItem((object o) =>
                    {
                        while (freeSpace > 0)
                        {
                            using (FileStream fs = new FileStream("", FileMode.OpenOrCreate))
                            {
                                //写文件
                                freeSpace -= fs.Length;
                                this.progressBar1.Invoke(new Action(() => this.progressBar1.Value += Convert.ToInt32(fs.Length/ 1000)));
                            }
                        }
                    });把磁盘剩余空间稍做处理作为progressBar的最大值,每创建一个文件就把进度条的进度增加相应的长度
      

  4.   

    文件 size 做 progressbar的 maximum每写入多少字节
    for 一下progressbar 的游标 加 就可以了