web-dev-qa-db-ja.com

エスケープキーでWPFのウィンドウを閉じる方法

可能性のある複製:
「エスケープキーを押して閉じる」動作をプロジェクト内のすべてのWPFウィンドウに割り当てるにはどうすればよいですか?

ユーザーがエスケープボタンをクリックしたときに、wpfプロジェクトのウィンドウを閉じます。すべてのウィンドウにコードを書きたくはありませんが、ユーザーがエスケープキーを押したときにキャッチできるクラスを作成したいと思います。

38
Kishore Kumar

オプション1

Button.IsCancel プロパティを使用します。

<Button Name="btnCancel" IsCancel="true" Click="OnClickCancel">Cancel</Button>

ボタンのIsCancelプロパティをtrueに設定すると、AccessKeyManagerに登録されるボタンが作成されます。ユーザーがESCキーを押すと、ボタンがアクティブになります。

ただし、これはダイアログに対してのみ適切に機能します。

Option2

Escを押してウィンドウを閉じる場合は、ウィンドウのPreviewKeyDownにハンドラーを追加します。

public MainWindow()
{
    InitializeComponent();

    this.PreviewKeyDown += new KeyEventHandler(HandleEsc);
}

private void HandleEsc(object sender, KeyEventArgs e)
{
    if (e.Key == Key.Escape)
        Close();
}
120
CharithJ