我試圖手動向我的Web瀏覽器控件添加一個新的鼠標單擊事件處理程序,因爲Web瀏覽器在其設計器屬性中沒有鼠標單擊事件。C#UserControl,手動添加事件處理程序
我需要運行一個代碼,只要用戶在網頁瀏覽器控件內點擊。此解決方法在Web瀏覽器沒有通過其現有的DocumentCompleted事件處理程序處理程序中添加了該處理程序。
當我運行下面的代碼時,它返回一個空異常。我想知道是否可以這樣做。
編輯:我已添加while循環以確保webbrowser1完成加載。但是,現在它陷入了while循環。這是否意味着網頁加載從未完成?
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
try
{
while (webBrowser1.ReadyState != WebBrowserReadyState.Complete)
{
Application.DoEvents();
}
webBrowser1.Document.Body.MouseDown += new HtmlElementEventHandler(Body_MouseDown);
}
catch (Exception ex)
{
Debug.WriteLine(ex.StackTrace);
Debug.WriteLine(ex.Message);
}
}
private void Body_MouseDown(Object sender, HtmlElementEventArgs e)
{
if(e.MouseButtonsPressed == MouseButtons.Left)
{
MessageBox.Show("File in web browser selected");
}
}
這可能發生,如果你的'Document'或'Body'在您主持未完全加載頁面。在添加處理程序之前,您是否曾嘗試將'webBrowser1'' ReadyState'的條件檢查添加爲'WebBrowserReadyState.Complete'? – praty
添加後,我意識到'webBrowser1'不在'WebBrowserReadyState.Complete'中,我不需要添加我需要的事件處理程序。我如何確保它在'WebBrowserReadyState.Complete'中? – CodeCafe
'while(webBrowser1.ReadyState!= WebBrowserReadyState.Complete) { Application.DoEvents(); }'我試過了,但代碼被卡在while循環中。 – CodeCafe