我的WinForms浏览器控件有3个上下文菜单。

BrowserImages,BrowserLinks和BrowserDefault。


右键单击文档的空白区域时,将加载默认值

右键单击链接时显示链接
当(您猜到了)右键单击图像时,将显示“图像”。


触发DocumentCompleted时,我添加Document_ContextMenuShowing事件-该代码为:

    /// <summary>
    /// Displays the Correct Context Menu for the element that is being right clicked on
    /// </summary>
    /// <param name="sender">
    /// HTMLDocument: The content of the web browser when the right click was detected.
    /// </param>
    /// <param name="e">
    /// HtmlElementEventArgs: Used for getting the location of the mouse so we know where to display the Context Menu
    /// </param>
    void Document_ContextMenuShowing(object sender, HtmlElementEventArgs e)
    {
        var res = (HtmlDocument)sender;

        if (res.ActiveElement.InnerHtml.ToLowerInvariant().Contains("img"))
        {
            cmsBrowserImages.Show(e.ClientMousePosition.X, e.ClientMousePosition.Y);
        }
        else if (res.ActiveElement.InnerHtml.ToLowerInvariant().Contains("href"))
        {
            cmsBrowserLinks.Show(e.ClientMousePosition.X, e.ClientMousePosition.Y);
        }
        else
        {
            cmsBrowserDefault.Show(e.ClientMousePosition.X, e.ClientMousePosition.Y);
        }
    }


有没有更好,更健壮(更好地工作)的方式来做到这一点?
首选C#代码,但VB.Net可以使用,易于重写。

谢谢

最佳答案

我会使用document.elementFromPoint而不是依赖document.activeElement

关于c# - WinForm浏览器控件右键单击了哪个元素?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19311204/

10-13 06:26