2012-03-29 30 views
6

winforms(v2.0)アプリケーションで、JavaScriptを含むHTMLファイルをWebブラウザコントロールにロードしたいと考えています。実行時にはインターネットにアクセスできないため、JavaScriptやHTMLフォームはresources.resxファイルに埋め込まれます。埋め込みリソースからHTML/JavaScriptをwinform Webブラウザに読み込む方法

1)どのように私は、ファイルに類似したリソース(のうちのHTMLドキュメントを読み込むことができます)///操作が、それはファイルシステムからロードされていない、

2)どのように私だろうロードするJavaScriptスクリプトを宣言しますか?すなわち、

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

ありがとう! 、HTMLドキュメントを読み込むだけで埋め込みリソースとしてあなたのhtmlファイルをコンパイルして、し

答えて

6

:あなたは本当に、外部の.jsファイルを持っている必要がある場合は

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

を、私はあなたがおそらく彼らが埋め込まれたことを確認する必要がありますだと思いますリソース。次に、これらのリソースをJavaScriptの文字列に読み込むことができます。ここから(a reply on this pageから適応)

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のテキストフィールドとして設定することができます。 this question

幸運を参照してください。

+0

これはそのまま動作しません。埋め込みリソースとしてビルドされると、 'Properties.Resources。'は内容をバイト配列として返します。 – nathanchere

0

ファイル構造は次のとおりです。

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); 
+1

'Substring'で手動でスライスするのではなく、ここで' GetDirectoryName'のような 'System.IO.Path'関数を使うべきです。また、これは 'file:///'のURLになります。これはajax型のリクエストには向いていません。 – emackey

関連する問題