WebBrowserドキュメントでのマウスクリック座標の取得

PoYo

PictureBox内でクリック座標をキャプチャしていますが、WebBrowserでも同じことを実現したいと考えています。いくつかの調査Clickの結果、WebBrowserコントロールのMouseイベントをサブスクライブできないことがわかりました
クリックをキャプチャするための可能な方法は何ですか?ページ内を移動しながらクリックをキャプチャできるような要素はありますか?

透明なパネルを作成しようとしましたが、透明な色は私が見るように透けて見えるという意味ではなく、要素が後ろにあるときもクリックをキャプチャしません。WebBrowserの後ろにあるパネルでクリックをキャプチャできることも機能します。

PictureBoxコード:

private void uploadedPNG_MouseClick(object sender, MouseEventArgs e)
{
    if(uploadedPNG.Image != null && !string.IsNullOrEmpty(deviceHeight.Text) && !string.IsNullOrEmpty(deviceWidth.Text))
    {
        mouseX = e.X;
        mouseY = e.Y;
        targetHeight = Int32.Parse(deviceHeight.Text);
        targetWidth = Int32.Parse(deviceWidth.Text);
        int outPutWidth = (mouseX * targetWidth) / uploadedPNG.Width;
        int outPutHeight = (mouseY * targetHeight) / uploadedPNG.Height;
        ConsoleText.Text = "Clicked X coordinate " + outPutWidth + " Clicked Y coordinate " + outPutHeight;
    }
}
ジミ

WebBrowser自体はマウスクリック座標を提供しません。実際にはコントロールクライアント領域をクリックするのではなく、HtmlDocumentのコンテンツをクリックします。

HtmlDocument.ClickまたはHtmlDocument.MouseDownイベントを使用して、初期化された HtmlDocumentのマウスポインタ座標を取得できます

HtmlElementEventArgsオブジェクトがで、両方の絶対座標(文書全体の領域)でのマウス座標を返しe.ClientMousePositionとクリックに対してにおいて、e.OffsetMousePosition
HtmlElement

Click現在のHtmlDocumentがすでに作成されているときイベントをサブスクライブする必要があるため、これは注意が必要です。デフォルトのDocumentオブジェクトのイベントをサブスクライブすることはできません。
つまり、次のコマンドでイベントをサブスクライブしますForm.Load

webBrowser1.Document.Click += (obj, evt) => { /*Do something */ };  

何も達成しません。イベントが発生することはありません。nullしたがって、ドキュメントはもちろん、現在の/アクティブなHtmlDocumentを参照するものではありません。

HtmlDocument準備ができたらあるWebBrowser.DocumentCompletedイベントが発生し、そのreadyStateのがに設定されていますWebBrowserReadyState.Complete

Document.Clickドキュメントが完全に読み込まれたときイベントをサブスクライブし、WebBrowserが新しいページに移動して新しいドキュメントを作成する前にイベントを削除できます。

また、DocumentCompleted1つのHTMLページでイベントが複数回発生する可能性があるため、同じイベントを複数回サブスクライブしないようにする必要があります。


AにHtmlDocumentは複数が含まFrame/IFrameれるFrame場合があり、それぞれに独自のHtmlDocument;が含まれる場合があります。IFrames確かにそれぞれ1つ持っています。この問題の詳細については、この質問のメモを参照してください:
Frames / IFrames内でHtmlElement値を取得するにはどうすればよいですか?

例:

bool WebBrowserDocumentEventSet = false;

private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
    WebBrowser wb = (sender as WebBrowser);
    if (wb.ReadyState == WebBrowserReadyState.Complete && WebBrowserDocumentEventSet == false)
    {
        WebBrowserDocumentEventSet = true;
        wb.Document.MouseDown += this.OnHtmlDocumentClick;
    }
}

private void webBrowser1_Navigating(object sender, WebBrowserNavigatingEventArgs e)
{
    (sender as WebBrowser).Document.MouseDown -= this.OnHtmlDocumentClick;
    WebBrowserDocumentEventSet = false;
}

protected void OnHtmlDocumentClick(object sender, HtmlElementEventArgs e)
{
    Console.WriteLine(e.ClientMousePosition);
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

OpenOfficeBASICマクロでマウスクリックからドキュメント座標を取得する方法

分類Dev

Javaで私のウィンドウの外でマウスクリック座標を取得する方法

分類Dev

テキスト座標のtextareaでマウスクリックの場所を取得します

分類Dev

three.jsでマウスクリックポイントの3D座標を取得します

分類Dev

キャンバスをクリックしたときにマウスの座標を取得する

分類Dev

特定の画面座標でのマウスクリックのシミュレーション

分類Dev

マウスクリックでmatplotlibプロット図pythonの座標を取得します

分類Dev

マウスクリックイベントの座標をmatplotlibに保存する

分類Dev

DIV内のキャンバスでクリック座標を取得する

分類Dev

アニメーション中にOpenGLでマウスクリック座標を取得しますか?

分類Dev

adbシェルのgeteventでマウスクリック座標を取得できません

分類Dev

OpenGLは、C ++でのマウスクリックでカーソル座標を取得します

分類Dev

マウスクリックでgmap.netの座標を取得できません

分類Dev

EaseJSドラッグアンドドロップ(Animate CC)ムービークリップのマウス座標

分類Dev

ボタンをクリックするとマウスの座標を取得します

分類Dev

ドキュメントの特定の座標での印刷

分類Dev

画像のJavascriptマウスクリック座標

分類Dev

DOMオブジェクトのjQuery xyドキュメント座標

分類Dev

Googleドキュメント-プログラムでアウトラインペインのアイテムにマウスクリックを送信します

分類Dev

マウスopencvなしで目的の座標をクリックします

分類Dev

大きなドキュメント用語マトリックス-ドキュメントの文字数をカウントするときのエラー

分類Dev

マウスの左クリックでコンテキストメニューを開くwpfc#

分類Dev

a-frameシーンでのマウスクリックの3D座標位置を知る方法

分類Dev

Matlab / Octaveの座標値に基づくポイントのセグメントマトリックス

分類Dev

テキストドキュメントの座標 'x、y'を浮動小数点リストオブジェクトに変換する

分類Dev

ArangoDBドキュメントのインデックスの取得

分類Dev

座標へのピクセルのマトリックス

分類Dev

Rのグリッドグラフィックスのマージン座標

分類Dev

2D座標から3D座標の解像度とカメラマトリックス

Related 関連記事

  1. 1

    OpenOfficeBASICマクロでマウスクリックからドキュメント座標を取得する方法

  2. 2

    Javaで私のウィンドウの外でマウスクリック座標を取得する方法

  3. 3

    テキスト座標のtextareaでマウスクリックの場所を取得します

  4. 4

    three.jsでマウスクリックポイントの3D座標を取得します

  5. 5

    キャンバスをクリックしたときにマウスの座標を取得する

  6. 6

    特定の画面座標でのマウスクリックのシミュレーション

  7. 7

    マウスクリックでmatplotlibプロット図pythonの座標を取得します

  8. 8

    マウスクリックイベントの座標をmatplotlibに保存する

  9. 9

    DIV内のキャンバスでクリック座標を取得する

  10. 10

    アニメーション中にOpenGLでマウスクリック座標を取得しますか?

  11. 11

    adbシェルのgeteventでマウスクリック座標を取得できません

  12. 12

    OpenGLは、C ++でのマウスクリックでカーソル座標を取得します

  13. 13

    マウスクリックでgmap.netの座標を取得できません

  14. 14

    EaseJSドラッグアンドドロップ(Animate CC)ムービークリップのマウス座標

  15. 15

    ボタンをクリックするとマウスの座標を取得します

  16. 16

    ドキュメントの特定の座標での印刷

  17. 17

    画像のJavascriptマウスクリック座標

  18. 18

    DOMオブジェクトのjQuery xyドキュメント座標

  19. 19

    Googleドキュメント-プログラムでアウトラインペインのアイテムにマウスクリックを送信します

  20. 20

    マウスopencvなしで目的の座標をクリックします

  21. 21

    大きなドキュメント用語マトリックス-ドキュメントの文字数をカウントするときのエラー

  22. 22

    マウスの左クリックでコンテキストメニューを開くwpfc#

  23. 23

    a-frameシーンでのマウスクリックの3D座標位置を知る方法

  24. 24

    Matlab / Octaveの座標値に基づくポイントのセグメントマトリックス

  25. 25

    テキストドキュメントの座標 'x、y'を浮動小数点リストオブジェクトに変換する

  26. 26

    ArangoDBドキュメントのインデックスの取得

  27. 27

    座標へのピクセルのマトリックス

  28. 28

    Rのグリッドグラフィックスのマージン座標

  29. 29

    2D座標から3D座標の解像度とカメラマトリックス

ホットタグ

アーカイブ