現在オフラインです。再接続するためにインターネットの接続を待っています

ShowDialog メソッドを使用して Windows フォームをモーダル ダイアログ ボックスとして表示させたとき、オーナー ウィンドウを操作できる場合があります。

現象
Windows フォームを ShowDialog メソッドによりモーダル ダイアログ ボックスとして表示させたとき、タスクバーからオーナー ウィンドウを選択すると、オーナー ウィンドウが持つコントロールを操作することができます。

たとえば、Button と TextBox をそれぞれ 1 つずつ持つフォーム (フォーム A) から別のフォーム (フォーム B) を ShowDialog メソッドにより表示させます。このとき、フォーム B はモーダルダイアログ ボックスとなるため、本来はオーナーであるフォーム A を使用することができません。しかし、タスク バーでフォーム A を選択するとフォーム A をアクティブにすることが可能です。

この状態で Tab キーを入力すると、フォーム A の Button と TextBox 間でフォーカスを移動させることができ、更に Button にフォーカスが当たっている状で Enter キーを入力すると Button を押下することができます。ただし TextBox への文字列入力や、フォーム A の最小化、最大化やクローズなどの操作は実行できません。
原因
Form クラスのインスタンスを生成した際、ShowInTaskbar プロパティは既定で true に設定されます。この設定により、フォームの拡張ウィンドウ スタイルに WS_EX_APPWINDOW が追加されます。

WS_EX_APPWINDOW スタイルはウィンドウが表示されているときにはタスク バー上にアイコンを表示するよう Windows に指示するものですが、モーダルなウィンドウに対しこのスタイルが指定されることを Windows は想定していません。そのため、このようなフォームが表示された場合 Windows は予期しない結果をもたらします。
解決方法
ShowDialog メソッドで表示するフォームの ShowInTaskbar プロパティを false に設定します。

状況
マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。
注意 : これは、マイクロソフトのサポート組織内で直接作成された "緊急公開" の資料です。 この資料には、確認中の問題に関する現状ベースの情報が記載されています。 情報提供のスピードを優先するため、資料には誤植が含まれる可能性があり、予告なしに随時改定される場合があります。 その他の考慮事項については、使用条件を参照してください。
プロパティ

文書番号:2862584 - 最終更新日: 09/20/2016 10:24:00 - リビジョン: 2.0

Microsoft .NET Framework 1.0, Microsoft .NET Framework 1.1, Microsoft .NET Framework 2.0, Microsoft .NET Framework 3.0, Microsoft .NET Framework 3.5, Microsoft .NET Framework 4.0, Microsoft .NET Framework 4.5

  • KB2862584
フィードバック
html>