我试图手动向我的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