Как загрузить HTML / JavaScript из встроенного ресурса в веб-браузер winform - PullRequest
6 голосов
/ 30 марта 2012

Я хочу, чтобы некоторые HTML-файлы с JavaScript загружались в элемент управления веб-браузера в приложении winforms (v2.0). Во время выполнения у меня не будет доступа в Интернет, поэтому формы JavaScript и HTML будут встроены в файл resources.resx.

1) как я могу загрузить HTML-документ из ресурса (аналог операции file: ///, но он не загружается из файловой системы),

2) как мне объявить загружаемые скрипты JavaScript? То есть.,

<script src=resource.jquery.min.js??? ... />

Спасибо!

Ответы [ 2 ]

6 голосов
/ 30 марта 2012

Чтобы загрузить документ HTML, просто скомпилируйте html-файл как встроенный ресурс, а затем:

WebBrowser browser = new WebBrowser();
browser.DocumentText = Properties.Resources.<your_html_file>;

Если вам действительно нужны внешние файлы .js, думаю, вам, вероятно, понадобится их создать.встроенные ресурсы.Затем вы можете прочитать эти ресурсы в виде строки javascript.

string GetResourceString(string scriptFile) 
{ 
    Assembly assembly = Assembly.GetExecutingAssembly(); 
    Stream str = assembly.GetManifestResourceStream(scriptFile); 
    StreamReader sr = new StreamReader(str, Encoding.ASCII));
    return sr.ReadToEnd();
}

(адаптировано из ответ на этой странице )

Отсюда загляните в IHTMLScriptElement.Насколько я понимаю, вы можете использовать эту строку javascript и установить ее в качестве текстового поля ITHMLScriptElement.См. этот вопрос

Удачи.

0 голосов
/ 19 ноября 2015

Вот структура файла.

enter image description here

Я добился успеха благодаря этому:

Установите свойства html-файлов в моем решении следующим образом:

Build Action -> Content
Copy to Output Directory -> Copy always

Настройте свойства моего объекта webBrowser следующим образом:

var myAssembly = System.Reflection.Assembly.GetExecutingAssembly().CodeBase;
var path = myAssembly.Substring(0, myAssembly.Length - "MyLib.DLL".Length) + "WebViews/prototype/index.html";
webBrowser.Url = new Uri(path);
...