如何从savefiledialog获取完整路径并在“startInfo.Arguments”中使用?

时间:2011-12-07 14:24:10

标签: c# winforms

在我的情况下,SaveFileDialog不会写任何文件,但我想用来指定命令行应用程序的路径,该应用程序将在sf对话框中的“已保存”的相同位置创建日志文件。

SaveFileDialog sfd = new SaveFileDialog();
sfd.Filter = "*.txt";
string sfdname = saveFileDialog1.FileName;
if (sfd.ShowDialog() == DialogResult.OK)
{
  Path.GetFileName(sfd.FileName);
}

startInfo.Arguments = "--log=" + Path.GetFileName(sfd.FileName);

6 个答案:

答案 0 :(得分:11)

您可以使用

Path.GetFullPath(sfd.FileName);

而不是

Path.GetFileName(sfd.FileName);

完整版......

SaveFileDialog sfd = new SaveFileDialog();
sfd.Filter = "*.txt";
string sfdname = saveFileDialog1.FileName;
if (sfd.ShowDialog() == DialogResult.OK)
{
  Path.GetFullPath(sfd.FileName);
}

startInfo.Arguments = "--log=" + Path.GetFullPath(sfd.FileName);

答案 1 :(得分:5)

只需删除Path.GetFileName

即可
startInfo.Arguments = "--log=\"" + sfd.FileName + "\"";

答案 2 :(得分:2)

我认为您根据所描述的内容使用了错误的对话框。

尝试使用FolderBrowserDialog类:

string folderPath = string.Empty;

using (FolderBrowserDialog fdb = new FolderBrowserDialog()) {
  if (fdb.ShowDialog() == DialogResult.OK ){
    folderPath = fdb.SelectedPath;
  }
}

if (folderPath != string.Empty) {
  startInfo.Arguments = "--log=" + folderPath;
}

答案 3 :(得分:0)

也许Path.GetFullPath会有所帮助?

答案 4 :(得分:0)

问题可能是使用了错误的FileSaveDialog Win32.dll中的那个不提供完整路径,但System.Windows.Forms中的那个提供。{/ p>

答案 5 :(得分:0)

OpenFileDialog openFileDialog1 = new OpenFileDialog();
                openFileDialog1.Filter = "Image files | *.jpg";
                if (openFileDialog1.ShowDialog() == DialogResult.OK)
                {
                 employee_dp.Image = Image.FromFile(openFileDialog1.FileName);
                 string path = System.IO.Path.GetDirectoryName(openFileDialog1.FileName);
                 string onlyFileName = System.IO.Path.GetFileName(openFileDialog1.FileName);
                 filepath = Path.GetFullPath(path).Replace(@"\", @"\\");
                 filepath = filepath + "\\\\" + onlyFileName;
                 MessageBox.Show(filepath);