2

WinForms ブラウザー コントロール用に 3 つのコンテキスト メニューがあります。

BrowserImages、BrowserLinks、および BrowserDefault。

  1. ドキュメントの空白領域を右クリックすると、デフォルトが読み込まれます
  2. リンクを右クリックするとリンクが表示される
  3. 画像は、ご想像のとおり、画像を右クリックすると表示されます。

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 は簡単に書き直すことができます。

ありがとう

4

1 に答える 1

2

に依存するのではなく、document.elementFromPointを使用しますdocument.activeElement

于 2013-10-11T06:57:37.013 に答える