从两个字符串开始处理

问题描述:

我想打开用户可以设置的文件。换句话说,它永远不会是一个设定的路径或文件。所以当用户选择文件时,他们想打开下面的这个按钮将打开它。我已经将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,它会打开一个资源管理器,向我显示该目录。感谢您的期待。

+0

你有没有尝试过?它有用吗?如果不是,那么错误是什么? – 2012-02-20 15:20:06

+1

那么你有什么问题?你有没有试过这段代码?它工作吗,它有问题吗?你是否只关心设计或安全类型的问题? – Servy 2012-02-20 15:20:33

+0

对不起,我应该更具体的错误状态“系统找不到指定的文件。”当他们知道他们想访问的设置路径和程序时,我一直在网上找到其他人的代码。我希望它比那更具活力。然而却没有找到任何人想要做我正在做的事 - 我觉得很奇怪。 – Marshal 2012-02-20 15:21:46

是的,它会的工作,但我会建议您更新代码这个代替:

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

这工作,因为我刚刚在文本框中测试它,但它不会加载文件。我有一种感觉,这是与文件名中的空格有关,并且.doc扩展名已被取消。所以仍然有相同的错误。 – Marshal 2012-02-20 15:28:39

+0

奇怪的'Path.GetFileName'不应该删除扩展名。空间也不应该成为问题。 – 2012-02-20 15:32:20

+0

刚刚测试了我的机器上的代码。从我的桌面打开Word文档,并按预期工作。该路径还包含空格。 – 2012-02-20 15:45:13

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

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

改为使用Path.Combine

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

你为什么不只是这样做: -

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