none
本人菜,抄了一段代码,放在CLASS里,请问如何在窗体里调用执行. RRS feed

  • 问题

  •         public static void CopyPic(string SourcePath, string TargetPath, bool Overwrite)
            {
                //如果源目录不存在,则退出
                if (!Directory.Exists(SourcePath))
                {
                    return;
                }
                try
                {
                    //如果目标路径不存在,则创建目录
                    if (!Directory.Exists(TargetPath))
                    {
                        Directory.CreateDirectory(TargetPath);
                    }
                }
                catch (Exception ex)
                {
                    string ErrInfo = ex.Message;
                    return;
                }
    
                if (Directory.Exists(TargetPath))
                { 
                    //遍历源路径的文件夹,获取文件名(带路径)
                    foreach (string FileName in Directory.GetFiles(SourcePath))
                    {
                        try
                        {
                            //复制文件
                            File.Copy(FileName, Path.Combine(TargetPath, Path.GetFileName(FileName)), Overwrite);
                        }
                        catch (Exception ex)
                        {
                            string ErrInfo = ex.Message;
                        }
                    }
                    foreach (string SubPath in Directory.GetDirectories(SourcePath))
                    { 
                        //复制文件
                        CopyPic(SubPath, Path.Combine(TargetPath, Path.GetFileName(SubPath)), Overwrite);
                    }
                }
            }


    注:是放在CLASS文件里, public static void CopyPic(string SourcePath, string TargetPath, bool Overwrite)
    这行代码有没有写错??

    还有个问题,为何运行到                foreach (string FileName in Directory.GetFiles(SourcePath))时提示目录名称无效???

    • 已编辑 呆oO 2012年9月28日 13:36
    2012年9月28日 13:05

答案

  • 1.方法定义没错。

    2.SourcePath 这个传入的地址是否有效。

    3.你可以使用类名称.CopyPic(...) 来调用你的方法(静态方法可以直接调用)。


    family as water

    • 已标记为答案 呆oO 2012年10月2日 0:11
    2012年9月29日 2:00
  • 直接把代码放到窗体类内部,并且这样调用:

    public class Form1:Form
    {
    public static void CopyPic(string SourcePath, string TargetPath, bool Overwrite)
            {
                //如果源目录不存在,则退出
                if (!Directory.Exists(SourcePath))
                {
                    return;
                }
                try
                {
                    //如果目标路径不存在,则创建目录
                    if (!Directory.Exists(TargetPath))
                    {
                        Directory.CreateDirectory(TargetPath);
                    }
                }
                catch (Exception ex)
                {
                    string ErrInfo = ex.Message;
                    return;
                }
    
                if (Directory.Exists(TargetPath))
                { 
                    //遍历源路径的文件夹,获取文件名(带路径)
                    foreach (string FileName in Directory.GetFiles(SourcePath))
                    {
                        try
                        {
                            //复制文件
                            File.Copy(FileName, Path.Combine(TargetPath, Path.GetFileName(FileName)), Overwrite);
                        }
                        catch (Exception ex)
                        {
                            string ErrInfo = ex.Message;
                        }
                    }
                    foreach (string SubPath in Directory.GetDirectories(SourcePath))
                    { 
                        //复制文件
                        CopyPic(SubPath, Path.Combine(TargetPath, Path.GetFileName(SubPath)), Overwrite);
                    }
                }
            }
    
      //其它函数里
       if(CopyPic(……))
       {
       }
    }

    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    • 已标记为答案 呆oO 2012年10月2日 0:11
    2012年9月29日 2:43
    版主

全部回复

  • 1.方法定义没错。

    2.SourcePath 这个传入的地址是否有效。

    3.你可以使用类名称.CopyPic(...) 来调用你的方法(静态方法可以直接调用)。


    family as water

    • 已标记为答案 呆oO 2012年10月2日 0:11
    2012年9月29日 2:00
  • 直接把代码放到窗体类内部,并且这样调用:

    public class Form1:Form
    {
    public static void CopyPic(string SourcePath, string TargetPath, bool Overwrite)
            {
                //如果源目录不存在,则退出
                if (!Directory.Exists(SourcePath))
                {
                    return;
                }
                try
                {
                    //如果目标路径不存在,则创建目录
                    if (!Directory.Exists(TargetPath))
                    {
                        Directory.CreateDirectory(TargetPath);
                    }
                }
                catch (Exception ex)
                {
                    string ErrInfo = ex.Message;
                    return;
                }
    
                if (Directory.Exists(TargetPath))
                { 
                    //遍历源路径的文件夹,获取文件名(带路径)
                    foreach (string FileName in Directory.GetFiles(SourcePath))
                    {
                        try
                        {
                            //复制文件
                            File.Copy(FileName, Path.Combine(TargetPath, Path.GetFileName(FileName)), Overwrite);
                        }
                        catch (Exception ex)
                        {
                            string ErrInfo = ex.Message;
                        }
                    }
                    foreach (string SubPath in Directory.GetDirectories(SourcePath))
                    { 
                        //复制文件
                        CopyPic(SubPath, Path.Combine(TargetPath, Path.GetFileName(SubPath)), Overwrite);
                    }
                }
            }
    
      //其它函数里
       if(CopyPic(……))
       {
       }
    }

    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    • 已标记为答案 呆oO 2012年10月2日 0:11
    2012年9月29日 2:43
    版主