我有一个带有添加按钮的表单。单击时,用户从对话框中选择一个或多个文件。
我的目标:
检索用户选择的所有文件的名称(从他们的文件所在的目录中),将这些文件复制到用户不使用File.Copy选择的指定文件夹中(我很难 - 编码文件路径和文件名)。
我的问题:
如果用户只选择一个,这可以正常工作。例如:
string name = System.IO.Path.GetFileName(sfd.FileName)
;
这会抓取文件。然后:
DialogResult dialogResult = MessageBox.Show("Is this published?", "", MessageBoxButtons.YesNo);
if (dialogResult == DialogResult.Yes)
{
Directory.CreateDirectory("c:\\NewTest\\" + txtAcronym.Text + "\\" + txtMajor.Text + "." + txtMinor.Text + "\\Published");
File.Copy(sfd.FileName, "c:\\NewTest\\" + txtAcronym.Text + "\\" + txtMajor.Text + "." + txtMinor.Text + "\\Published\\" + name);
}
else if (dialogResult == DialogResult.No)
{
Directory.CreateDirectory("c:\\NewTest\\" + txtAcronym.Text + "\\" + txtMajor.Text + "." + txtMinor.Text + "\\NonPublished");
File.Copy(sfd.FileName, "c:\\NewTest\\" + txtAcronym.Text + "\\" + txtMajor.Text + "." + txtMinor.Text + "\\NonPublished\\" + name);
}
我问用户文件是否已发布。根据答案,它将创建一个目录并将该文件放在该目录中。
是否可以在openFileDialog中循环遍历多个文件名并将它们全部放在一个文件夹中,而不仅仅是一个?
答案 0 :(得分:2)
将Multiselect设置为true。
myFileDialog.Multiselect = true;
当用户接受选择时,您可以使用FileNames
属性获取它们。它返回字符串[] 。请注意FileName
与字符串的区别。您可以使用for或foreach来获得所有结果。
foreach (string file in myFileDialog.FileNames)
{
//do work
}