如何在左键单击时显示 WebBrowser 控件上下文菜单

How to show WebBrowser control context menu on left-click

WebBrowser 控件有一个可以设置为上下文菜单的 ContextMenuStrip 属性。但是这个菜单是右键出现的,左键怎么显示呢? WebBrowser控件没有Click事件,WebBrowser.Document点击事件的MousePosition不准确。这似乎取决于鼠标悬停的元素以及浏览器滚动条是否显示在正确的位置。

这是给你的一些代码。您正在寻找的是可以使用事件处理程序实现的。如果您需要帮助,请在评论中提问。

this._browser.DocumentCompleted+=new WebBrowserDocumentCompletedEventHandler(browser_DocumentCompleted);
...
private void browser_DocumentCompleted(Object sender, WebBrowserDocumentCompletedEventArgs e)
{
    this._browser.Document.Body.MouseDown += new HtmlElementEventHandler(Body_MouseDown);
}
...
void Body_MouseDown(Object sender, HtmlElementEventArgs e)
{
    switch(e.MouseButtonsPressed)
    {
    case MouseButtons.Left:
        //your code
    break;
    }
}

您可以为 Click event or other mouse events of Document and show the context menu at Cursor.Position 分配处理程序。

您还可以阻止默认点击操作 e.ReturnValue = false;

private void webBrowser1_DocumentCompleted(object sender,
                                           WebBrowserDocumentCompletedEventArgs e)
{
    this.webBrowser1.Document.Click += Document_Click;
}

void Document_Click(object sender, HtmlElementEventArgs e)
{
    //To prevent the default click action you can uncomment next line:
    //e.ReturnValue = false;

    this.contextMenuStrip1.Show(Cursor.Position);
}