将pdf文件添加到Visual Studio中

时间:2014-06-17 20:01:21

标签: c# visual-studio-2010 pdf

我有一个menustrip,它有一个我创建的标签,标记为“内容”。我希望能够单击“内容”选项卡,弹出一个窗口,其中包含列出内容的pdf文件。我有pdf文件,列出保存到我​​桌面的内容。有没有办法将这个pdf文件添加到visual studio中,这样当我点击Content选项卡时,pdf文件将被打开?

我不想单击另一个按钮来搜索我的计算机以查找文件,例如使用OpenFileDialog。我只想单击Contents选项卡,让它打开一个包含pdf文件的窗口。

1 个答案:

答案 0 :(得分:1)

有多种方法可以做到这一点。

1)一种方法是从您的应用程序启动一个进程,该进程将在您的PC上打开PDF文件的默认注册查看器(例如Adobe Reader),并将完整路径作为参数传递给PDF文件:

在这里你可以找到通过文件扩展名确定默认处理程序应用程序的路径(在你的例子中是“.pdf”):

http://www.pinvoke.net/default.aspx/shlwapi/AssocQueryString.html

string execPath = GetAssociation(".pdf");

了解可执行文件的路径后,您可以使用PDF文件的路径作为参数启动它:

using System.Diagnostics;
...
// Start new process
Process.Start(execPath, "C:\\myfile.pdf").WaitForExit(0);

2)另一种方法是在您的应用中创建Windows表单并向其添加Web浏览器控件。然后,可以通过编程方式将Web浏览器控件“导航到”您的特定PDF文件。假设您的Internet Explorer可以通过在其窗口中使用Adobe Reader之类的内容显示PDF文件,即作为内联附件:

将项目中的引用添加到Microsoft Internet Controls 1.1(右键单击引用>添加引用...> COM)。

在您的表单代码中(此处panePdfViewer是占位符System.Windows.Forms.Panel控件):

private AxSHDocVw.AxWebBrowser axWebBrowser;

...

private void InitializeWebControl()
{
  this.SuspendLayout();

  this.axWebBrowser = new AxSHDocVw.AxWebBrowser();
  ((ISupportInitialize)(this.axWebBrowser)).BeginInit();
  this.axWebBrowser.Anchor = ((AnchorStyles)((((AnchorStyles.Top | AnchorStyles.Bottom)
  | AnchorStyles.Left)
  | AnchorStyles.Right)));
  this.axWebBrowser.Enabled = true;
  this.axWebBrowser.Location = this.panelPdfViewer.Location;
  this.axWebBrowser.Size = this.panelPdfViewer.Size;
  ((ISupportInitialize)(this.axWebBrowser)).EndInit();
  this.axWebBrowser.Visible = false;

  this.Controls.Add(this.axWebBrowser);

  this.ResumeLayout(false);
}

然后:

// Clear browser
object blank = "about:blank";
this.axWebBrowser.Navigate2(ref blank);

// Display file
object loc = "file:///" + System.IO.Path.GetFullPath(fileName).Replace('\\', '/');
object null_obj_str = null;
object null_obj = null;
this.axWebBrowser.Navigate2(ref loc, ref null_obj, ref null_obj, ref null_obj_str, ref null_obj_str);

3)第三种方法是使用可以显示PDF文件的第三方控件库。