1

Ctrlこんにちは、アプリケーションで WPF WebBrowser コントロールを使用しているときに問題が発生しました。たとえば、 +などの IE のショートキーを無効にする必要がありNます。この問題を解決する方法はありますか? お願い助けて。

前もって感謝します

4

3 に答える 3

6

winforms WebBrowser では、PreviewKeyDownイベントと set を処理することもできますIsInputKey = true。これにより、無効にするショートカット/ホットキーをより適切に制御できます。この例は、Ctrl+N と Ctrl+O を無効にし、Ctrl+F やコピー/貼り付けなどの他のホットキーを有効にする方法を示しています。

void browser_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{
    if ((e.KeyCode == Keys.N || e.KeyCode == Keys.O) && e.Control)
    {
        e.IsInputKey = true;
    }
}

PreviewKeyDownイベントは WPF バージョンに存在しますが、同等のコードは試していません。WebBrowserWPF バージョンには機能が不足していたため、WPF でwinform をホストするように変更しました。

于 2013-05-02T15:17:40.330 に答える
2

WebBrowserコントロールのWebBrowserShortcutsEnabledプロパティをfalseに設定すると、実行しようとしていることを実行できます。

于 2012-05-23T13:22:40.887 に答える
0

WPFWebBrowserコントロールで特定のショートカット/ホットキーを無効にする方法に関する最終的な回答を追加します。

初期化:

Browser = new WebBrowser();
Browser.LoadCompleted += DocumentLoaded;
Browser.PreviewKeyDown += BrowserOnPreviewKeyDown;

イベント処理:

private void BrowserOnPreviewKeyDown(object sender, KeyEventArgs e)
{
    Key key = (e.Key == Key.System ? e.SystemKey : e.Key);
    switch (key)
    {
        // disable F5
        case Key.F5:
            e.Handled = true;
            return;
        // disable Ctrl + O, Ctrl + N, Ctrl + L
        case Key.O:
        case Key.N:
        case Key.L:
            if (e.KeyboardDevice.IsKeyDown(Key.LeftCtrl))
            {
                e.Handled = true;
            }
            return;
        case Key.P: // Print dialog
            if (e.KeyboardDevice.IsKeyDown(Key.LeftCtrl))
            {
                // is handled, when printing is disabled
                e.Handled = !EnablePrintHotKey;
            }
            return;
    }
}

@curlyhairedgeniusの回答に基づく

于 2021-06-17T13:23:00.590 に答える