繁体   English   中英

C#UserControl,手动添加事件处理程序

[英]C# UserControl, Add Event Handler Manually

我试图将新的Mouse-click事件处理程序手动添加到Web浏览器控件中,因为Web浏览器在其设计器属性中没有鼠标click事件。

每当用户在Web浏览器控件中单击时,我都需要运行一个代码。 此解决方法通过其现有DocumentCompleted事件处理程序添加了Web浏览器没有的处理程序。

当我运行下面的代码时,它返回一个空异常。 我想知道是否可以这样做。

编辑:我添加了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");
    }
}

您的代码必须类似于:

private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
    if (webBrowser1.ReadyState == WebBrowserReadyState.Complete)
    {
        webBrowser1.Document.Body.MouseDown += new HtmlElementEventHandler(Body_MouseDown);
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM