Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用SaveFileDialog作为多个文件的路径说明符_C#_Wpf_Savefiledialog - Fatal编程技术网

C# 使用SaveFileDialog作为多个文件的路径说明符

C# 使用SaveFileDialog作为多个文件的路径说明符,c#,wpf,savefiledialog,C#,Wpf,Savefiledialog,在我的程序中,我目前正在使用SaveFileDialog将.txt文件输出到用户指定的路径,如下所示: Microsoft.Win32.SaveFileDialog dlg = new Microsoft.Win32.SaveFileDialog(); dlg.FileName = "filename.txt"; Nullable<bool> result = dlg.ShowDialog(); if (result == true) { //Open file, p

在我的程序中,我目前正在使用
SaveFileDialog
将.txt文件输出到用户指定的路径,如下所示:

Microsoft.Win32.SaveFileDialog dlg = new Microsoft.Win32.SaveFileDialog();
dlg.FileName = "filename.txt";

Nullable<bool> result = dlg.ShowDialog();

if (result == true)
{
      //Open file, print text, close file
      File.WriteAllLines(dlg.FileName, stringArray);
}

如何将多个文件写入由
SaveFileDialog
指定的位置?

string directory=Path.GetDirectoryName(dlg.Filename)将为您获取目录名。然后您可以执行
Path.Combine(目录,“filename.txt”)或任何您想要写入的文件路径


编辑:使用文件夹浏览器对话框
。然后在向用户显示对话框后,可以执行
dlg.SelectedPath

如果我不清楚,我很抱歉,但我不是在写文件路径。路径由用户在
SaveFileDialog
中单击的文件夹指定。当他们按“保存”时,我希望我的两个文件都放在那个位置。正确的方法是+1。另外,我建议您在本例中使用@McGarnagle描述的选择文件夹方法,而不是保存对话框(因为您正在保存多个文件)。使用
FolderBrowserDialog
。然后在向用户显示对话框后,您可以执行
dlg.SelectedPath
。SaveFileDialog不会为您提供一个可以保存多个文件的目录,它会为您提供一个文件的文件路径。这就是为什么如果使用SaveFileDialog保存一个文件,则需要使用
Path.GetDirectoryName(dlg.Filename)
获取保存该文件的目录,以便以后可以将更多文件保存到同一目录。但是,更直接的方法是使用
FolderBrowserDialog
直接获取目录本身,然后您可以通过将文件名附加到目录名的末尾来编写多个文件。我看不出您在哪里编写第二个文件。将其添加为if块中的最后一行:
stringfilename2=Path.Combine(目录,“File2”);writeAllines(fileName2,stringArray2)
//Call functions to create string arrays to write to .txt files
createArrayForFile1();
createArrayForFile2();

Microsoft.Win32.SaveFileDialog dlg = new Microsoft.Win32.SaveFileDialog();
dlg.FileName = "File1";

Nullable<bool> result = dlg.ShowDialog();

if (result == true)
{
      //Create, print, and close both files
      File.WriteAllLines(dlg.FileName, stringArray1);
      directory = Path.GetDirectoryName(dlg.FileName);
      Path.Combine(directory, "File2"); 
}