5

ユーザーが自分のWebブラウザコントロールを右クリックしたときにすべてを選択したいと思います。

私はwinformsアプリを開発しており、HTMLを使用して単語のスタイルを設定できるため、Webブラウザーを使用して情報を表示しています。

右クリックのコンテキストメニューが機能していません。その上のオプションはすべて私のアプリとは無関係です。

しかし、選択した後のコンテキストメニュー、コピー、切り取り、貼り付けのオプションを保持します。

私はすでにすべてを選択することができます:

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

Webブラウザの右クリックイベントでやりたいのですが?

4

4 に答える 4

5

MouseDownイベントの処理:

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

ユーザーが右ボタンを押したことを確認してから、すべてを選択します。

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")

WPFではなくWinFormsを使用している場合は、IsWebBrowserContextMenuEnabledをfalseに設定して、IEのコンテキストメニューを防ぐことができます。その場合、WebBrowserコントロールで指定したContextMenuが使用されます。

WPFには、Webブラウザーで公開されている同じプロパティがないため、それほど簡単ではない可能性があります。この場合WindowsFormsHost、WPFでWinFormsWebブラウザーをホストするためにを使用する必要がある場合があります。

于 2012-07-10T07:13:04.357 に答える
2

これは動作します:)

コンテキストメニューに[すべて選択]が表示されたら、コピー、貼り付け、切り取りなどを使用して、必要なコンテキストメニューを押し出します。

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プロパティがすでにロードされていることを確認する必要があります。次に、Mouseイベントを登録できます。

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