2013-04-16 57 views
3

那麼在我的Windows窗體應用程序,我有一個簡單的網絡瀏覽器,應該運行一個.html文件包含css樣式的註冊表單。當使用webBrowser1.Navigate("http://www.example.com/mypage.html");遠程加載頁面時,它運行得非常好;然而,當我試圖嵌入.html文件通過設置Building ActionEmbedded Resource在資源[與所需的css文件一起]時,webBrowser只有導航到.html文件,而沒有檢測到css文件,這導致一個令人毛骨悚然的頁面外觀。加載.html,與css引用,文件嵌入資源

這裏是我迄今爲止嘗試過的代碼。

.html文件:

<link href="lang/en/compact.css" rel="stylesheet" type="text/css" /> 
    <link href="lang/en/lang.css" rel="stylesheet" type="text/css" /> 
    <link href="img/basics.css" rel="stylesheet" type="text/css" /> 

我如何才能從Embedded Resources.html文件:

using (Stream stream = Assembly.GetExecutingAssembly() 
        .GetManifestResourceStream("DummyBrowserFormImprovements.HTML." + "mypage.html")) 
    if (stream != null) 
     using (var reader = new StreamReader(stream)) 
     { 
      string result = reader.ReadToEnd(); 
      dummyBrowser1.DocumentText = result; 
     } 

不幸的是,上述方法僅加載.html文件沒有認識到它引用的css文件;因此,有關如何嵌入在Windows窗體中使用js, css外部文件的.html文件以及如何將其加載到webBrowser的任何詳細答案將非常讚賞。我希望我明確表示我的問題,並提前致謝。

回答

1

該問題可能是因爲其他文件仍然嵌入在您的應用程序中。瀏覽器在哪裏找到它們?

您可以將所有必需的嵌入式文件寫入臨時目錄,並讓Web瀏覽器從那裏加載.html頁面。一旦html頁面被加載,它應該能夠找到你的其他資源,因爲它們將在同一個目錄中(或者你製作的任何結構)。

基本上我說,你可以所有的文件提取到像一個臨時目錄結構:

C:\mytempsite\mypage.html 
C:\mytempsite\lang\en\compact.css 
C:\mytempsite\lang\en\lang.css 
C:\mytempsite\img\basics.css 

然後你可以在網頁瀏覽器設置爲navigate到「C:\ mytempsite \的mypage.html」

只要您可以在沒有您的應用程序的情況下直接導航到此頁面,並且頁面加載正確,那麼這應該在您的應用程序導航到那裏時運行。只要確保mypage.html格式正確並且是一個完整的頁面。

+0

這是行不通的,我試過這個瀏覽器的webBrowser.DocumentText = File.ReadAllText(@「C:\ mypage.html」); [所有需要的資源]它也無法加載它們......' –

+0

我更新了我的答案以包含此信息。 –

+0

有沒有其他方法可以直接從資源中運行而不必提取它? –