【问题标题】:Process start from two strings进程从两个字符串开始
【发布时间】:2012-02-20 15:17:19
【问题描述】:

我正在尝试打开用户可以设置的文件。换句话说,它永远不会是一个设定的路径或文件。所以当用户选择了他们想要打开的文件时,下面的这个按钮将打开它。我已将 l1 和 p1 声明为公共字符串。

    public void button4_Click(object sender, EventArgs e)
    {

         DialogResult result = openFileDialog1.ShowDialog();
         if (result == DialogResult.OK)
         {

             l1 = Path.GetFileName(openFileDialog1.FileName);
             p1 = System.IO.Path.GetDirectoryName(openFileDialog1.FileName);

         }


    public void button2_Click(object sender, EventArgs e)
    {
    //p1 = directory path for example "C:\\documents and settings\documents"
    //l1 = filename

        Process.Start(p1+l1);
    }

所以只是为了查看我想只使用目录路径和文件名打开文件。这可能吗?我可以在那里拥有 p1 ,它会打开一个资源管理器,向我显示该目录。感谢您的关注。

【问题讨论】:

  • 你试过了吗?它奏效了吗?如果不是,错误是什么?
  • 那么你有什么问题呢?你试过这个代码吗?好用吗,有问题吗?您只是关心设计或安全类型的问题吗?
  • 抱歉,我应该更具体地说明错误状态“系统找不到指定的文件”。当他们知道设置的路径和他们想要访问的程序时,我一直在网上寻找其他人的代码。我希望它比这更有活力。然而,没有人愿意做我正在做的事情——我觉得这很奇怪。
  • 永远不要仅仅连接路径,总是寻找更好的方法,例如Path.Combine.

标签: c# winforms process.start


【解决方案1】:

是的,它会起作用,但我建议您改为更新您的代码:

var path = Path.Combine(p1, l1);
Process.Start(path);

【讨论】:

  • 这可以工作,因为我刚刚在文本框中对其进行了测试,但是它不会加载文件。我感觉这与文件名中的空格有关,并且 .doc 扩展名已被取消。所以仍然有同样的错误。
  • 奇怪 Path.GetFileName 不应该删除扩展名。空格也不应该成为问题。
  • 刚刚在我的机器上测试了代码。从我的桌面打开一个 Word 文档,它按预期工作。该路径还包含空格。
  • 谢谢,最后是我的错误,我取出的一些代码使它无法正常工作。谢谢你的帮助 - 多么轻松的准备把我的头发扯掉。
【解决方案2】:

您不应该使用字符串连接来组合目录和文件名。在您的情况下,生成的字符串将如下所示:

C:\documents and settings\documentsfilename
                                  ^^
                             this is wrong

改为使用Path.Combine

string path = Path.Combine(p1, l1);
Process.Start(path);

【讨论】:

    【解决方案3】:

    你为什么不简单地这样做:-

    public void button4_Click(object sender, EventArgs e)
    {
        string fileNameWithPath;
        DialogResult result = openFileDialog1.ShowDialog();
        if (result == DialogResult.OK)
        {
            fileNameWithPath = openFileDialog1.FileName;
        }
    }
    
    public void button2_Click(object sender, EventArgs e)
    {
        Process.Start(fileNameWithPath);
    }
    

    【讨论】:

      猜你喜欢
      • 2011-01-21
      • 1970-01-01
      • 2016-06-24
      • 2017-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-19
      • 2017-04-09
      相关资源
      最近更新 更多