C# 在运行时在WebBrowser控件中显示我的项目的HTML文件

C# 在运行时在WebBrowser控件中显示我的项目的HTML文件,c#,.net,winforms,webbrowser-control,C#,.net,Winforms,Webbrowser Control,我想显示项目中存在的本地html文件: 调用文件是HelpFile.cs,其中表单包含WebBrowser控件 我想联系的地址是: C:\Users\Keith\Desktop\Lingerie\Corset\Corset\Bra.html 正在从以下位置调用该文件: 结果是无法显示可怕的页面 我想做的是能够调用文件作为一个相对的html页面。在以后的阶段,我希望能够调用不同的帮助文件 这是最好的方法还是我犯了一个根本性的错误,走错了路 任何有建设性的帮助都将不胜感激。项目中存在的文件位于

我想显示项目中存在的本地html文件:

调用文件是
HelpFile.cs
,其中表单包含
WebBrowser
控件

我想联系的地址是:

C:\Users\Keith\Desktop\Lingerie\Corset\Corset\Bra.html
正在从以下位置调用该文件:

结果是无法显示可怕的页面

我想做的是能够调用文件作为一个相对的html页面。在以后的阶段,我希望能够调用不同的帮助文件

这是最好的方法还是我犯了一个根本性的错误,走错了路


任何有建设性的帮助都将不胜感激。

项目中存在的文件位于计算机中的特定位置。但是,在分发程序并在用户机器上运行它之后,该文件将不存在于目标机器中

您可能希望分发该文件或将其添加为资源。要解决此问题,您可以使用以下任一解决方案:

  • 您可以在生成时将文件复制到输出目录
  • 您可以将该文件添加到资源文件中,如
    Resources.resx
  • 您可以将该文件作为嵌入式资源
然后,要显示文件,可以使用以下方法:

  • 获取文件路径并调用该方法或将其分配给属性
  • 获取资源内容并将其分配给属性
  • 获取资源流并将其分配给属性
将文件复制到输出目录 要在生成时将文件复制到输出目录,请执行以下操作:

  • 解决方案浏览器→ 查看文件的属性
  • 将生成操作设置为内容
  • 将“复制到输出目录”设置为“始终复制”
然后文件将被复制到输出目录,您可以这样使用它:

var path = System.IO.Path.Combine(Application.StartupPath, "test.html");
this.webBrowser1.Navigate(path);
this.webBrowser1.DocumentText = Properties.Resources.test;
请注意,如果文件位于项目中的文件夹下,例如
MyFolder
下,则它将被复制到应用程序输出目录中具有相同名称的文件夹中:

var path = System.IO.Path.Combine(Application.StartupPath, "MyFolder", "test.html");
this.webBrowser1.Navigate(path);
将该文件添加到Resources.resx之类的resx资源文件中 您可以将该文件添加到项目的资源文件中。这样,它将分布在资源程序集中,您不需要将文件复制到输出目录。为此:

  • 解决方案浏览器→ 你的项目→ 属性文件夹→ 打开Resources.Resx文件
  • 从设计器的工具栏→ 添加现有文件→ 添加html文件
然后文件的内容将通过
资源的string属性可用。属性名称将与文件名相同,例如,如果文件名为
test.html
,则属性名称将为
test
,您可以这样使用它:

var path = System.IO.Path.Combine(Application.StartupPath, "test.html");
this.webBrowser1.Navigate(path);
this.webBrowser1.DocumentText = Properties.Resources.test;
请注意,对于此解决方案,该文件不需要由您的项目分发,它将是资源文件的一部分。但是,它将成为项目文件的一部分

将文件作为嵌入式资源 您可以将该文件作为嵌入式资源。这样,它将分布在资源程序集中,您不需要将文件复制到输出目录。为此:

  • 解决方案浏览器→ 查看文件的属性
  • 将生成操作设置为嵌入式资源
  • 将“复制到输出目录”设置为“不复制”
然后要使用,您需要从嵌入式资源中获取文件内容。假设文件名为“test.html”:


请注意,如果您在项目中的某个文件夹(如
MyFolder
)中有该文件,则上述示例中的文件名将为“MyFolder.test.html”。

存在于项目中的文件,位于计算机中的特定位置。但是,在分发程序并在用户机器上运行它之后,该文件将不存在于目标机器中

您可能希望分发该文件或将其添加为资源。要解决此问题,您可以使用以下任一解决方案:

  • 您可以在生成时将文件复制到输出目录
  • 您可以将该文件添加到资源文件中,如
    Resources.resx
  • 您可以将该文件作为嵌入式资源
然后,要显示文件,可以使用以下方法:

  • 获取文件路径并调用该方法或将其分配给属性
  • 获取资源内容并将其分配给属性
  • 获取资源流并将其分配给属性
将文件复制到输出目录 要在生成时将文件复制到输出目录,请执行以下操作:

  • 解决方案浏览器→ 查看文件的属性
  • 将生成操作设置为内容
  • 将“复制到输出目录”设置为“始终复制”
然后文件将被复制到输出目录,您可以这样使用它:

var path = System.IO.Path.Combine(Application.StartupPath, "test.html");
this.webBrowser1.Navigate(path);
this.webBrowser1.DocumentText = Properties.Resources.test;
请注意,如果文件位于项目中的文件夹下,例如
MyFolder
下,则它将被复制到应用程序输出目录中具有相同名称的文件夹中:

var path = System.IO.Path.Combine(Application.StartupPath, "MyFolder", "test.html");
this.webBrowser1.Navigate(path);
将该文件添加到Resources.resx之类的resx资源文件中 您可以将该文件添加到项目的资源文件中。这样,它将分布在资源程序集中,您不需要将文件复制到输出目录。为此:

  • 解决方案浏览器→ 你的项目→ 属性文件夹→ 打开Resources.Resx文件
  • 从设计器的工具栏→ 添加现有文件→ 添加html文件
然后文件的内容将通过
资源的string属性可用。属性名称将与文件名相同,例如,如果文件名为
test.html
,则属性名称将为
test
,您可以这样使用它:

var path = System.IO.Path.Combine(Application.StartupPath, "test.html");
this.webBrowser1.Navigate(path);
this.webBrowser1.DocumentText = Properties.Resources.test;
请注意,对于此解决方案,该文件不需要由您的项目分发,它将是资源文件的一部分。但是,它将成为项目文件的一部分

使文件成为嵌入式资源