Ctrlこんにちは、アプリケーションで WPF WebBrowser コントロールを使用しているときに問題が発生しました。たとえば、 +などの IE のショートキーを無効にする必要がありNます。この問題を解決する方法はありますか? お願い助けて。
前もって感謝します
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 バージョンに存在しますが、同等のコードは試していません。WebBrowser
WPF バージョンには機能が不足していたため、WPF でwinform をホストするように変更しました。
WebBrowserコントロールのWebBrowserShortcutsEnabledプロパティをfalseに設定すると、実行しようとしていることを実行できます。
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の回答に基づく