🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Windows Forms

Windows Forms(WinForms)はMicrosoft .NET フレームワークに含まれる視覚的なアプリケーションのプログラミングインターフェイス(API)です。WinFormsは管理されているコードの既存のWindowsのAPIをラップすることで元のMicrosoft Windowsのインターフェイスのエレメントにアクセスすることができます。

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

Q&A

解決済

1回答

3006閲覧

FormアプリケーションのWebBrowserでショートカットキーを無効化したときにAlt+F4だけ使えるようにしたい.

abroad128

総合スコア60

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Windows Forms

Windows Forms(WinForms)はMicrosoft .NET フレームワークに含まれる視覚的なアプリケーションのプログラミングインターフェイス(API)です。WinFormsは管理されているコードの既存のWindowsのAPIをラップすることで元のMicrosoft Windowsのインターフェイスのエレメントにアクセスすることができます。

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

0グッド

1クリップ

投稿2021/02/18 13:37

編集2021/02/18 13:38

下記コードで,サブウィンドウにWebBrowserを配置して,サブウィンドウのWebBrowserにフォーカスがあるときにAlt+F4でサブウィンドウだけを閉じるようにしたいのですが,なぜか親フォームまで閉じてしまいます.
何故でしょうか.

C#

1using System; 2using System.Collections.Generic; 3using System.ComponentModel; 4using System.Data; 5using System.Drawing; 6using System.Linq; 7using System.Text; 8using System.Threading.Tasks; 9using System.Windows.Forms; 10 11namespace WindowsFormsApp6 12{ 13 public partial class Form1 : Form 14 { 15 public Form1() 16 { 17 InitializeComponent(); 18 } 19 20 private void Form1_Shown(object sender, EventArgs e) 21 { 22 var f2 = new Form2(); 23 f2.Show(); 24 } 25 } 26 27 public class Form2 : Form 28 { 29 public Form2() 30 { 31 var webBrowser1 = new WebBrowser(); 32 webBrowser1.Dock = DockStyle.Fill; 33 webBrowser1.WebBrowserShortcutsEnabled = false; 34 Controls.Add(webBrowser1); 35 36 webBrowser1.PreviewKeyDown += (sender, e) => 37 { 38 if (e.Alt & e.KeyCode == Keys.F4) 39 Close(); 40 }; 41 42 webBrowser1.DocumentText = "test"; 43 } 44 } 45}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

試してみると確かに閉じてしまいます。
simple editor using webBrowser control
これに関係しているかもしれません。

予測ですがWebBrowserコントロールがフォームを閉じてしまってキーを処理するフォームが閉じてしまったので次にアクティブになっているForm1が受け取ってしまってForm1も閉じているのかと思います。

また下記も試してみました。

1.Form1を表示し、さらにもうひとつFormを開いて、さらにWebBrowserが配置されてるForm2を開く
→同様の操作をすると3番目と2番目のフォームが閉じて1番目のフォームは残りました。

2.掲題のソースの閉じる処理にTask.Delay(3000)後に実行するようにすると対象フォームのみ閉じました。

上記のような動作からショートカットキーは無効にされてるようなので

C#

1webBrowser1.WebBrowserShortcutsEnabled = false; 2webBrowser1.PreviewKeyDown += (sender, e) => { 3 if (e.Alt & e.KeyCode == Keys.F4) { 4 e.IsInputKey = true; 5 } 6};

のようにしてWebBrowserにAlt+F4も通常キーの扱いをしたところFormが処理してくれたようで対象フォームだけが閉じるようになりました。

また、新しいブラウザコントロールのWebView2を使用したところ同様の現象は起きませんでした。

投稿2021/02/19 16:57

dekaaki

総合スコア292

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問