WebView2のコンテキストメニューを止める

WebView2を組み込んだWPFアプリを開発、実装が進んで概ね満足のいく状態になってから気がついた。

コンテキストメニューが表示される

迂闊だったがEdge組み込んでいるわけだから、そりゃコンテキストメニューあるよね。でも、そういうのはアプリ側で処理したいから表示されないようにしたいところ。

CoreWebView2Settings Classを見ると AreDefaultContextMenusEnabled で設定できる事が分る。

WebView2CoreWebView2InitializationCompleted ()イベントでこのプロパティをfalseにするとコンテキストメニューが表示されなくなる。

private void wvMyChart_CoreWebView2InitializationCompleted(object sender, Microsoft.Web.WebView2.Core.CoreWebView2InitializationCompletedEventArgs e)
{
    // コンテキストメニューを非表示
    this.wvPassiveClimateChart.CoreWebView2.Settings.AreDefaultContextMenusEnabled = false;

}

もしかしてキーボードショートカットも?

ふと気になって、もしやとCtrl+Pしたら印刷ダイアログが表示される。やっぱりショートカットも生きてる。

これもアプリ側で処理したいので、無効化する。

ショートカットは AreBrowserAcceleratorKeysEnabled プロパティで設定できる。最終的なコードは以下のような感じになった。

private void wvMyChart_CoreWebView2InitializationCompleted(object sender, Microsoft.Web.WebView2.Core.CoreWebView2InitializationCompletedEventArgs e)
{
    // コンテキストメニューを非表示
    this.wvPassiveClimateChart.CoreWebView2.Settings.AreDefaultContextMenusEnabled = false;
    // キーボードショートカットを無効化
    this.wvPassiveClimateChart.CoreWebView2.Settings.AreBrowserAcceleratorKeysEnabled = false;
}

動作環境

以下の環境で動作を確認しています。

  • Windows10 Pro(64bit, 20H2)
  • Visual Studio Pro 2022
  • .net framework 4.8

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です