泥庭

2011年9月28日

WindowsXP&WPFで発生する不具合

Filed under: .NET, WPF — タグ: , — yone64 @ 9:35 PM

WindowsXP&WPFの環境では、Window.ShowDialog()でモーダルウインドウを開いても、親Windowに対するキーボード操作が可能です。いまさらXPを使うなといわれそうだけど、これは致命的。

【再現手順】

WPFプロジェクトを新しく作成します。

Windowに追加するのは、TextBoxとButtonのみ。

image1
あとで見分けやすいようにTitleに”親”と設定しておきます。

Button1のコードビハインドに下記コードを追加します。
private void button1_Click(object sender, RoutedEventArgs e)
{
    var window = new MainWindow();
    window.Owner = this;
    window.Title = "子";
    window.ShowDialog();
}

実行します。

ボタンをクリックし、子Windowを表示します。

image2

通常は、子WindowがActiveになり、親Windowに対する操作ができなくなります。

親Windowのタスクバー表示を右クリックし、移動を選択します。

image3

すると親WindowがActiveになります。

image4

この状態で親Windowはキーボード操作を受け付けてしまうので、TextBoxに対する入力やボタンの押下などが可能です。

image5

 

誰か回避方法を教えて…

 

コメントする »

まだコメントはありません。

RSS feed for comments on this post. TrackBack URI

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

WordPress.com で無料サイトやブログを作成.

%d人のブロガーが「いいね」をつけました。