2011-04-07 69 views
2

我环顾四周,看到使用资源 (如何创建和使用资源在网) 的帖子。我学会了如何将文件放置到项目的资源中并以编程方式检索它。但是,我没有看到有资源的想法,也许? 我在窗体上有一个选项卡,我有一个webbrowser控件,但我只想显示一个帮助文档。 我把html文件作为资源,但是当我查找资源后打印出来的时候,它给了我所有文件的文本(html标签)而不仅仅是文件名,这样我就可以做类似在C#项目中使用资源

helpBrowser.Url = new Uri("file//:"+Properties.Resources.help); 

我可能需要一种不同的方法。我使用控件不是实际浏览,而是显示一个页面,而不是完全意图使用。

谢谢,伙计们。 StackOverflow非常棒!

+0

我很好奇你为什么要追求这方面的资源。有没有关于你的项目,让你不愿意将HTML文件作为内容? – 2011-04-07 16:33:26

+0

原因是我想以某种方式打包这个HTML文件到最终构建神器,所以问题变成如何引用另一个控件属性(URL)中的文件的完整路径和实际包装HTML文件与可执行文件 – 2011-04-07 16:56:04

+0

在那如果你被丹尼尔或罗伯特的方法困住了。问题是没有文件路径可供参考。正如罗伯特所说,它直接烘焙到可执行文件中,这意味着文件系统在物理上并不存在,因此不能用文件路径引用。 – 2011-04-07 17:14:08

回答

2

WebBrowser是一个非托管组件,它不知道.NET资源。有一个协议来读取非托管资源,但你不想去那里。使用时只需将DocumentText属性:

private void HelpButton_Click(object sender, EventArgs e) { 
     webBrowser1.DocumentText = Properties.Resources.HelpPage; 
    } 

谨防平时麻烦显示离线HTML,它将不知道在哪里可以找到你的HTML嵌入的任何图像。如果这是一个交易断路器,那么你最好在磁盘上的文件。无论如何,这是对大文件更全面的更好解决方案。

+0

这对我来说是最好的解决方案。谢谢! – 2011-04-07 19:08:09

1

您无法直接将资源作为具有受管资源的文件访问。您将不得不手动将内容插入Web浏览器控件。

1

资源嵌入在您的EXE或DLL中,无法直接通过浏览器访问。 您需要检索资源并将其保存到临时文件,然后将浏览器指向该临时文件。