5

当用户右键单击我的网络浏览器控件时,我想全选。

我正在开发一个 win forms 应用程序,并使用网络浏览器来显示我的信息,因为我可以使用 html 来设置文字样式。

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

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

我已经可以全选了:

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

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

4

4 回答 4

5

处理MouseDown事件:

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

并确保用户按下Right button,然后全选:

void Document_MouseDown(object sender, HtmlElementEventArgs e)
{
    if(e.MouseButtonsPressed == MouseButtons.Right)
    {
        webBrowser.Document.ExecCommand("SelectAll", true, null);
    }
}
于 2012-07-10T07:19:28.430 回答
4

本文展示了如何将 Web 浏览器的上下文菜单替换为您自己的。

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

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

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

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

于 2012-07-10T07:13:04.357 回答
2

This works :)

When the context menu shows select all is running pushing out the contextmenu i want, with the copy, paste, cut and so on.

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);
        }
于 2012-07-10T07:16:05.437 回答
0

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

`browser.DocumentCompleted += (s, e) => {
                             browser.Document.MouseMove += (sM, eM) +=> {
                                                          Debug.WriteLine(eM.ClientMousePosition.X);
                                                                        };
                                       };
`
于 2013-05-02T17:41:32.637 回答