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
正是我想要的,看起来更干净、更简单。