捕获Web浏览器控件的鼠标右键单击事件

时间:2012-07-10 06:46:25

标签: c# winforms webbrowser-control

我想在用户右键点击我的网络浏览器控件时选择所有内容。

我正在开发一个win表单应用程序,并使用Web浏览器显示我的信息,因为我可以使用html来设置单词的样式。

右键单击上下文菜单对我不起作用。它上面的选项与我的应用程序无关。

但是我想保留选择后的上下文菜单,复制,剪切,粘贴选项。

我已经可以选择全部:

getCurrentBrowser().Document.ExecCommand("SelectAll", true, null);

我只想在网络浏览器的右键单击事件中执行此操作?

4 个答案:

答案 0 :(得分:5)

处理MouseDown事件:

webBrowser.Document.MouseDown += new HtmlElementEventHandler(Document_MouseDown);

并确保用户按右键,然后选择全部:

void Document_MouseDown(object sender, HtmlElementEventArgs e)
{
    if(e.MouseButtonsPressed == MouseButtons.Right)
    {
        webBrowser.Document.ExecCommand("SelectAll", true, null);
    }
}

答案 1 :(得分:4)

This文章介绍了如何用自己的方式替换Web浏览器的上下文菜单。

或者,如果您在Web浏览器中执行以下Javascript,它将禁用默认的右键单击上下文菜单:

    document.oncontextmenu=new Function("return false")

如果您使用的是WinForms而不是WPF,则可以将IsWebBrowserContextMenuEnabled设置为false以阻止IE上下文菜单,在这种情况下,它将使用您在WebBrowser控件上提供的ContextMenu。

WPF在Web浏览器上没有公开相同的属性,因此可能不那么容易。在这种情况下,您可能必须使用WindowsFormsHost在WPF中托管WinForms Web浏览器。

答案 2 :(得分:2)

这有效:)

当上下文菜单显示选择全部正在运行时,推出我想要的上下文菜单,复制,粘贴,剪切等。

private void webCompareSQL_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            if (webCompareSQL.Document != null)
            {
                webCompareSQL.Document.ContextMenuShowing += DocMouseClick;
            }
        }
        void DocMouseClick(object sender, HtmlElementEventArgs e)
        {
            webCompareSQL.Document.ExecCommand("SelectAll", true, null);
        }

答案 3 :(得分:0)

您需要确保已加载WebBrowser.Document属性。然后您可以注册鼠标事件。

`browser.DocumentCompleted += (s, e) => { 
                             browser.Document.MouseMove += (sM, eM) +=> { 
                                                          Debug.WriteLine(eM.ClientMousePosition.X); 
                                                                        };
                                       };
`