C# ';路径。合并';问题

C# ';路径。合并';问题,c#,winforms,C#,Winforms,考虑: private void cmdOpenPDF_DoubleClick(object sender, EventArgs e) { string path1 = @"Z:\Google Docs\Documents"; string path2 = docIDTextBox.Text; string path3 = ".pdf"; Path.Combine(path1,path2,path3); System.Diagnostics.Process

考虑:

private void cmdOpenPDF_DoubleClick(object sender, EventArgs e)
{
    string path1 = @"Z:\Google Docs\Documents";
    string path2 = docIDTextBox.Text;
    string path3 = ".pdf";
    Path.Combine(path1,path2,path3);
    System.Diagnostics.Process.Start(Path.Combine(path1, path2, path3));
}
我试图使用上面的代码打开一个PDF文件,该文件位于虚拟驱动器Z:drive上

当我尝试此方法时,我得到以下结果:

Path.Combine(path1, "\\", path2, path3);
未处理win32异常:

系统找不到该文件 指定的


我不知道这意味着什么,也不知道我的代码有什么问题。路径有效,我可以在不使用文本框的情况下将其打开。

路径。Combine
用于将多个文件夹合并到一个路径中。
因此,您的代码创建了路径
Z:\Google Docs\Documents\something\.pdf
,这不是您想要的


您应该通过调用
Path.ChangeExtension
(如果要从文本框中删除任何扩展名)或简单地连接字符串来添加扩展名。

如果
path2
只是一个没有扩展名的文件名,您可以使用:

Path.Combine(path1, path2 + path3)
检查并正确初始化三个变量。Path.Combine仍然适用于您,尽管它不是您的最佳选择。

请尝试以下操作:

Path.Combine(path1, "\\", path2, path3);

path2是否具有.pdf扩展名?您的路径结果为Z:\Whatever\Foo.pdf.pdfNext time请提供一个可编译的代码示例或带有相应错误的失败代码示例。还要找到一个更有意义的标题,不要在标题内写标签。这就是标签的用途。它不是!当有人在做研究时,他们下载pdf并将其放入我们的云驱动器。文本框中输入的是城市提供的文档ID号。
Path.Combine
只接受两个参数,为什么要给3。你的意思是说别的还是这是你自己的类来组合路径。请发布一个干净的代码。第六行在代码中实际执行的操作是什么。Path2显示为null(应该是文本框中的文本),因此无法找到它。知道为什么吗?这解决了部分问题,但由于某种原因,我的文本框的值没有被传递。知道为什么会这样吗?这很好用,谢谢@zhangz。我发现了另一个问题,我的项目几乎完成了!这是微软提供的最佳解决方案吗?我也可以编写
string.Concat(path1,@“\”,path2,path3)
Path.ChangeExtension
正是我想要的,看起来更干净、更简单。