通过按钮单击在Windows窗体中打开.pdf文件

21

在我当前的窗口上,有一个按钮。我想要点击该按钮并打开该项目资源文件夹中的一个.pdf文件。有简单的方法可以做到这一点吗?

我查看了其他方法,它们使用文件路径,但是路径可能并不总是相同的,但是.pdf文件始终在资源文件夹中。是否有一种方法可以访问并在单击按钮时打开它?

有什么建议吗?

string filename = "instructions.pdf";
file.open();

问题已得到解决

private void Button1_Click(object sender, EventArgs e)
{
    string filename = "instructions.pdf";
    System.Diagnostics.Process.Start(filename);
}

将 instructions.pdf 放在程序.exe 所在的 bin/debug 文件夹中。

3个回答

38
要使用系统默认的查看器打开文件,您需要调用以下函数:
System.Diagnostics.Process.Start(filename);

但我还没有理解文件路径的问题。如果您需要从程序.exe文件到资源文件夹的相对路径,则可以将"Resources\"或".. \ Resources\"(如果资源文件夹在更高层级)添加到文件路径中。

或者,您可以将pdf作为嵌入式资源添加到项目中,然后在需要打开它时,可以使用代码将其保存到某个临时位置。

Path.GetTempPath()

并打开它。


我的问题是路径可能包含 C:\My Documents,如果我在另一台电脑上打开它,路径不一定相同。我会尝试按照你的建议解决它。 - Jed5931
您可以将文件保存在应用程序附近(同一文件夹中),然后只需打开它,而无需指定文件夹,即可使用“instructions.pdf”。 - Artem
5
Process.Start() 大部分都能正常工作。但我遇到了这个错误:“指定的可执行文件不是此操作系统平台上的有效应用程序”。根据这篇文章解决了这个问题: https://dev59.com/UVYN5IYBdhLWcg3w2rSU#47066203我的运行环境是在 Windows 10 下 .NET Core 3.1 WinForms 插件中。 - John Dyer

1
如果您想使用Adobe Reader或类似的应用程序打开PDF文件,您可以使用Process.Start函数。
ProcessStartInfo startInfo = new ProcessStartInfo("pathtofile");
Process.Start(startInfo);

这将表现为您在Windows文件夹中单击文件的操作。如果您无法放置文件路径,则可以将文件从资源复制到临时文件夹并使用该路径。

这并不保证打开Acrobat Reader。它会在机器默认的PDF文件应用程序中打开,但并非同一应用程序。 - t.durden

-1

要在C#的Windows应用程序中打开PDF文件,请按以下步骤进行:

1- 打开新的Windows应用程序

2- 转到工具箱,然后在任何位置右键单击,然后选择“选择项目”,如下图所示:

enter image description here

3- 转到 COM 组件并选择 Adobe PDF 阅读器,参见图像:

enter image description here

4- 再次转到工具箱并搜索控件 Adobe PDF Reader,参见图像:

enter image description here

5- 将控件拖放到您的 Windows 窗体上或双击它

6- 拖动按钮或条形菜单

7- 双击按钮或菜单并编写以下代码:

            string filename = "MyPDF.pdf";
            System.Diagnostics.Process.Start(filename);

8- 将您的PDF文件复制到程序路径并粘贴到调试文件夹中,路径如下:

c:\myprojectfiles\bin\debug\MyPDF.pdf

9- 运行您的程序并单击按钮,它将打开PDF文件。

希望这能帮到您。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接