C# 使用Process.Start打开pdf文件

C# 使用Process.Start打开pdf文件,c#,pdf,process.start,C#,Pdf,Process.start,我正在尝试使用C的Process.Start在Adobe reader中打开PDF文件 当我提供一个没有空格的路径时,它可以正常工作,但是包含空格的路径和pdf文件不会打开 这是我的代码: Button btn = (Button)sender; ProcessStartInfo info = new ProcessStartInfo(); info.FileName = "AcroRd32"; string s = btn.Tag.ToString(); //btn.Tag Contains

我正在尝试使用C的Process.Start在Adobe reader中打开PDF文件

当我提供一个没有空格的路径时,它可以正常工作,但是包含空格的路径和pdf文件不会打开

这是我的代码:

Button btn = (Button)sender;
ProcessStartInfo info = new ProcessStartInfo();
info.FileName = "AcroRd32";
string s = btn.Tag.ToString();
//btn.Tag Contains the full file path 
info.Arguments = s;
Process.Start(info); 
如果是C:\\Users\\Manish\\Documents\\ms\u Essentials\u.NET\u 4.5.pdf,则可以正常工作,但如果是F:\\Tutorials\\C\\Foundational\\Microsoft Visual C 2012 Step By Step V413HAV.pdf,Adobe Reader会给出一个错误,指出打开文档文件时出现错误,无法找到

我已经在SO中阅读了许多与此主题相关的问题,但它不起作用。因为我不知道如何在字符串s中应用@prefix


有没有办法解决这个问题?

试着用引号括起来:

info.Arguments = "\"" + s + "\"";

尝试用引号括住参数:

info.Arguments = "\"" + s + "\"";

您应该引用参数列表中提供的路径。这将导致它将路径视为单个参数,而不是多个空格分隔的参数:

info.Arguments = "\"" + s + "\"";

您应该引用参数列表中提供的路径。这将导致它将路径视为单个参数,而不是多个空格分隔的参数:

info.Arguments = "\"" + s + "\"";

在客户端有一个默认的PDF阅读器:如果进程需要,只需使用文件名作为文件名。通常情况下,您不关心使用哪个程序,因此此解决方案只适用于:

Process.Start(pdfFileName);

这也不需要特殊的引用,因此它可以立即解决您的问题。

只是一个小技巧,客户端上设置了一个默认的PDF阅读器:如果需要,只需使用文件名作为文件名。通常情况下,您不关心使用哪个程序,因此此解决方案只适用于:

Process.Start(pdfFileName);

这也不需要特殊的引号,因此它可以立即解决您的问题。

在字符串值生效之前使用@字符:

var path = @"F:\Tutorials\C#\Foundational\Microsoft Visual C# 2012 Step By Step V413HAV.pdf";

在字符串值之前使用字符@应该有效:

var path = @"F:\Tutorials\C#\Foundational\Microsoft Visual C# 2012 Step By Step V413HAV.pdf";

在发布问题之前我已经试过了,但是我需要它是特定于程序的,以供将来参考,但是,无论如何,谢谢你的帮助我在发布问题之前已经试过了,但是我需要它是特定于程序的,以供将来参考,但是,无论如何,如果它有效,谢谢你的帮助,请勾选绿色V接受此答案。如果有效,请勾选绿色V接受此答案。