【问题标题】:How to get full path from savefiledialog and use in "startInfo.Arguments"?如何从 savefiledialog 获取完整路径并在“startInfo.Arguments”中使用?
【发布时间】:2011-12-07 14:24:10
【问题描述】:

在我的情况下,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);

【问题讨论】:

    标签: c# winforms


    【解决方案1】:

    你可以使用

    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);
    

    【讨论】:

      【解决方案2】:

      只需删除Path.GetFileName

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

      【讨论】:

      • 有了这个我得到了文件的完整路径(我用一个文本框检查了)但是命令行应用程序无法识别它。
      • @user830054:尝试在路径周围添加引号。查看更新的答案。
      【解决方案3】:

      根据您的描述,我认为您使用了错误的对话框形式。

      尝试使用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;
      }
      

      【讨论】:

        【解决方案4】:
        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);
        

        【讨论】:

        • 那是什么*
        • 打错字抱歉呵呵
        【解决方案5】:

        也许Path.GetFullPath 会有所帮助?

        【讨论】:

          【解决方案6】:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2018-04-13
            • 2019-10-16
            • 2019-08-10
            • 2011-12-11
            • 2011-05-09
            • 2014-12-08
            • 1970-01-01
            • 2010-09-30
            相关资源
            最近更新 更多