2009-09-07 152 views
1

我想創建一個帶有瀏覽器控件的窗體。我試圖在webbrowser控件中打開一個本地html文件。我在Help_Print文件夾中有html文件,所以我使用下面的代碼來指定webbrowser的Url。在Windows窗體應用程序中使用C#的WebBrowser控件#

wbPrint.Url = new Uri("file:///" + Application.StartupPath + "\\Help_Print\\help.html"); 

當窗體顯示webbrowser控件有錯誤「該程序無法顯示網頁」。我檢查了文件和文件夾位置。

但當我嘗試這個辦法:

wbPrint.Url = new Uri("file:///" + Application.StartupPath + "/help.html"); 

複製HTML文件到它正常工作的應用程序的啓動位置之後。

任何人都可以請解釋爲什麼會發生這種情況,因爲我想保留所有的html文件在一個單獨的文件夾中。

回答

3

我發現我的問題的解決方案,即使我不知道爲什麼我以前的代碼不起作用。我改變了兩件事:

(i)我刪除了Uri,正如我在回答我的另一個問題時所建議的那樣,對於本地html文件,我不需要使用Uri。所以這裏是工作的代碼。

 String sitePath = null; 
     try 
     { 
      sitePath = Application.StartupPath + @"\Print_Help\help.html"; 
      wbHelp.Navigate(sitePath); 
     } 
     catch (Exception exp) 
     { 
      MessageBox.Show(exp.ToString() + "\nSite Path: " + sitePath); 
      return false; 
     } 
     return true; 

(ii)我做的另一件事是手動創建Print_Help文件夾。以前它是在我構建我的項目時創建的,因爲html文件被標記爲「複製到輸出目錄」屬性爲「始終複製」。

我認爲第二個變化與我的問題解決方案有關,而不是第一個。如果你瞭解邏輯,請發表評論。

3

請勿在文件URL中使用黑色斜槓。請參閱the bizarre and unhappy story of file urls

+0

感謝您的及時回覆。即使我使用斜槓: wbPrint.Url = new Uri(「file:///」+ Application.StartupPath +「/Help_Print/help.html」); 我得到同樣的錯誤。 – kobra 2009-09-07 03:01:37

+0

也許你在Help_Print文件夾上有權限問題? – 2009-09-07 03:05:59

+0

我確定沒有權限問題,因爲我可以使用以下方式打開文件: System.Diagnostics.Process.Start(「。\\ Print_Help \\ help.html」); 構成另一種形式。而且,如果我將文件放在Help_Print的父文件夾中,我可以在web瀏覽器控件中看到該文件。 – kobra 2009-09-07 03:16:47

0

使用語法:file:// c:/xyz.html

相關問題