代码之家  ›  专栏  ›  技术社区  ›  NOGRP

OpenFileDialog从文本框多选目标路径

  •  0
  • NOGRP  · 技术社区  · 8 年前

    大家好,

    我想用openfiledialog将多个选定的文件复制到一个定义为 @"C:\TestFolder\"+ textBox1.Text 我的问题是,不知怎么的,程序也在文件名中写入了textBox内容。

    请在下面找到我的代码:

    private void button3_Click(object sender, EventArgs e)
    {
        OpenFileDialog od = new OpenFileDialog();
        od.Filter = "All files (*.*)|*.*";
        od.Multiselect = true;
        if (od.ShowDialog() == System.Windows.Forms.DialogResult.OK)
        {
            string targetPath = @"C:\TestFolder\"+ textBox1.Text;
            string path = System.IO.Path.Combine(targetPath, textBox1.Text);
    
            if (!System.IO.Directory.Exists(targetPath)
            {
                System.IO.Directory.CreateDirectory(targetPath);
            } 
            foreach (string fileName in od.FileNames)
            {            
                System.IO.File.Copy(fileName, path + System.IO.Path.GetFileName(fileName));
            } 
        }
    }
    

    如有任何意见,我们将不胜感激!

    2 回复  |  直到 8 年前
        1
  •  0
  •   user6270946 user6270946    8 年前

    试试这个:

     string Main_dir = @"C:\TestFolder\";
     string Sub_dir = textBox1.Text + @"\";
     string targetPath = System.IO.Path.Combine(Main_dir, Sub_dir);
          {
               if (!System.IO.Directory.Exists(targetPath))
          {
               System.IO.Directory.CreateDirectory(targetPath);
          }
               foreach (string fileName in od.FileNames)
    
               System.IO.File.Copy(fileName, targetPath + System.IO.Path.GetFileName(fileName), true);
          }
    

    缺少反斜杠

    • @"\"
        2
  •  0
  •   Daniel A. White    8 年前

    这些东西是等价的。

    string targetPath = @"C:\TestFolder\"+ textBox1.Text;
    string path = System.IO.Path.Combine(targetPath, textBox1.Text);
    

    我会放弃第一个 Path.Combine 当涉及到分离器时,它是便携式和健壮的。