2016-06-20 82 views
0

我編寫了一個應用程序,該應用程序通過webbrowser表單加載頁面。通過webbrowser_DocumentCompleted函數中的webbrowser.navigate完成加載頁面。這工作得很好。但是,如果應用程序沒有網絡,則顯示「此頁面無法顯示」 - 頁面。是否可以顯示自定義頁面,如果是 - 如何?感謝您的幫助。將「無法顯示此頁面」更改爲自定義頁面

回答

0

您可以在應用程序的開始時執行網絡檢查,如果失敗,您可以將其重定向到錯誤頁面?

反過來在你的app.config你可以使用下面的代碼:

<system.web> 
<customErrors> 
    <error statusCode="404" redirect="error.htm"/> 
</customErrors> 

,只要您的應用程序接收HTTP錯誤代碼404,將重定向到error.htm頁

0

該頁面是由您的瀏覽器給出的,並且不是的應用程序,所以不,您無法更改它。
然而,你可以做的是讀取網頁瀏覽器返回的HTML,檢查它沒有這樣說,並採取相應的行動。

例子:

//document completed function declaration 
{ 
     if (yourWebBrowser.Document.InnerHtml.Contains("This page cannot be displayed") 
     { 
      //Do Something 
     } 
} 
+0

示例中提供的代碼不起作用。 – tedder84

+0

InnerHtml未知。 – tedder84

+0

@ tedder84這就是我所說的「示例」,它沒有經過測試 –

0

呦可以創建自定義錯誤頁,並顯示它從你的web.config多個錯誤狀態。

定義錯誤頁:

當未處理的異常在ASP.NET應用程序會顯示三種類型的錯誤頁面的一個出現了:

  • 異常的詳細信息黃色死亡的錯誤頁面的屏幕,
  • 的運行時錯誤死亡的錯誤頁面的黃屏,或

  • 自定義錯誤p年齡

默認情況下,所有類型的錯誤都會導致顯示相同的自定義錯誤頁面。但是,您可以使用<customErrors>部分中的<error>子元素爲特定的HTTP status code指定不同的自定義錯誤頁面。例如,在未找到頁面錯誤,其中有404HTTP狀態代碼的情況下顯示不同的錯誤頁面,更新<customErrors>部分包括以下標記:

<customErrors mode="RemoteOnly" defaultRedirect="~/ErrorPages/Oops.aspx"> 
    <error statusCode="404" redirect="~/ErrorPages/404.aspx" /> 
</customErrors> 
0

一種方式做它是處理您的WebBrowser的Navigated方法,然後嘗試訪問WebBrowser對象的Document對象的Domain屬性。如果它無法訪問域(如服務器關閉或不存在),則會引發錯誤。然後,您只需要捕獲錯誤並將您自己的HTML直接寫入WebBrowser的Document對象,如下所示:

Private Sub WebBrowser1_Navigated(sender As Object, e As System.Windows.Forms.WebBrowserNavigatedEventArgs) Handles WebBrowser1.Navigated 

    Dim doc As HtmlDocument = WebBrowser1.Document 

    Try 
     Dim s As String = doc.Domain 
    Catch ex As Exception 
     WebBrowser1.Document.Write("<html><body><br/><h1>The site you are trying to reach is offline or hasn't been set up yet. Please contact your system administrator.</h1></body></html>") 
    End Try 
End Sub 
+0

歡迎來到SO,在回答時,儘量避免發佈一段代碼。相反,花幾分鐘時間來解釋代碼以及它的工作原理。請參閱[社區準則](https://stackoverflow.com/help/how-to-answer)以獲得很好的答案。 – LightBender