拷贝文件夹:
static public void CopyDirectory(string SourceDirectory, string TargetDirectory)
{
    DirectoryInfo   source = new DirectoryInfo(SourceDirectory);
    DirectoryInfo   target = new DirectoryInfo(TargetDirectory);
         
    //Check If we have valid source
    if(!source.Exists)
       return;     if(!target.Exists)
         target.Create();
         
      //Copy Files
      FileInfo[] sourceFiles = source.GetFiles();   
      for(int i = 0; i < sourceFiles.Length; ++i)
         File.Copy(sourceFiles[i].FullName, target.FullName + "\\" + sourceFiles[i].Name,true);
         
       //Copy directories
      DirectoryInfo[] sourceDirectories = source.GetDirectories();   
      for(int j = 0; j < sourceDirectories.Length; ++j)
         CopyDirectory(sourceDirectories[j].FullName,target.FullName +"\\" + sourceDirectories
}

解决方案 »

  1.   

    设置控制条参看:
    ProgressBar.Increment 方法
    public void Increment(
       int value
    );
      

  2.   

    先求出文件和目录的数目:
    static int Count(String src) {
      int count = 1;
      String[] sub = Directory.GetDirectories(src);
      for (int i = 0; i < sub.Length; i++) {
         count += Count(sub[i]);
      }
      String[] files = Directory.GetFiles(src);
      count += files.Length;
      return count;
    }
    设置ProgressBar属性Maximum为上面求出的数目,然后复制:
    static void Copy(String src, String dest) {
    try{
      Directory.CreateDirectory(dest);
      String[] sub = Directory.GetDirectories(src);
      for (int i = 0; i < sub.Length; i++) {
         String name = Path.GetFileName(sub[i]);
         Copy(sub[i], dest + "\\" + name);
      }
      String[] files = Directory.GetFiles(src);
      for (int i = 0; i < files.Length; i++) {
         String name = Path.GetFileName(files[i]);
         File.Copy(files[i], dest + "\\" + name);
      }
      progressBar1.Increment(files.Length + 1);//progressBar1是进度条。
    }catch(Exception e){
      Console.WriteLine(e);
    }
    }
      

  3.   

    Copy不能是static,应该将static去掉。
      

  4.   

    private int dirCopy(string dirFrom,string dirTo) 
    {
       if(!Directory.Exists(dirFrom)) throw(new Exception(dirFrom+" not exists")); 
       if(Directory.Exists(dirTo)) throw(new Exception(dirTo+" exists")); 
       Directory.CreateDirectory(dirTo); 
       try{
           foreach(string f in Directory.GetFiles(dirFrom)){
             File.Copy(f,dirTo+"\\"+Path.GetFileName(f)); 
           }
           foreach(string d in Directory.GetDirectories(dirFrom)){
              dirCopy(d,dirTo+"\\"+Path.GetFileName(d)); 
           } 
           return 0;
        }
        catch(Exception){ return -1;}       
      

  5.   

    晕!
    ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/cpref/html/frlrfSystemWindowsFormsProgressBarClassIncrementTopic.htm
      

  6.   

    大哥!MSDN呀!你别告诉我你没装VS 2003 或是VS 2002呀!
      

  7.   

    对啊,多花时间去看看你的MSDN……会有绝多好冬冬的,实在找不到……建议买新版本的MSDN for VS.net 2003