web-dev-qa-db-ja.com

Escapeキーを押してメソッドを呼び出す

キーが押された場合にC#でメソッドを開始する方法はありますか?例えば、 Esc

14
raimis

WinFormsアプリケーションを作成しています。ユーザーはテキストボックスに入力し、すべてを削除したい場合はクリックするだけです esc キーボードのキー

KeyDownイベント を処理する必要があると思います。

4
ChrisW

テキストボックスのOnKeyPressイベントを使用し、イベントで

if(e.KeyCode==Keys.Escape)
{
    yourTextBox.Text = string.Empty;
}
23
Gregoire

他の人が述べたように、適切なコントロールのKeyDownまたはKeyUpイベントを処理します。 KeyPressイベントは、 Escape キーも同様ですが、一部のキーではトリガーされません。 Shift、 Ctrl または ALt

この機能を実行したい場合は、ユーザーが Escape キーの場合は、おそらくフォーム上のイベントを処理する必要があります。これを行う場合は、フォームのKeyPreviewプロパティをtrueに設定することもできます。これにより、フォーカスが現在いずれかの子コントロール内にある場合でも、フォームコントロールがイベントを受け取ることができます。

現在フォーカスがあるテキストボックス内のテキストを消去するなど、動作をコントロールに固有にする場合は、KeyDownコントロールのKeyUpまたはTextBoxイベントを処理する必要があります。このように、ユーザーがテキストボックスの外でエスケープキーを押しても、イベントハンドラーはトリガーされません。

状況によっては、処理したばかりの同じイベントを子コントロールが処理しないようにする必要がある場合があります。 SuppressKeyPressクラスのKeyEventArgsプロパティを使用して、この動作を制御できます。

private void Form1_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Escape)
    {
        MessageBox.Show("Escape key pressed");

        // prevent child controls from handling this event as well
        e.SuppressKeyPress = true;
    }
}
14

誰かがこれを行う方法を探している場合コンソールアプリケーション

if (Console.ReadKey().Key == ConsoleKey.Escape)
{
    return;
}
3
Jon

フォームプロパティ "KeyPreview"をtrueに変更する必要がありますイベントが発生しません。これらのイベントを単独で処理しても、イベントが正しいとしても何も起こりません。適切なイベントハンドラーをサブスクライブしても、実際には何も起こらないように見えます。

3
Ognyan Dimitrov

プロパティの最初に> KeyPreview:True

次に:

private void Form1_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.Escape)
        {
            //call your method here
        }
    }
2

コンソールアプリケーション、WinFormsアプリケーションなどを作成していますか?キャプチャしようとしていますか ESC 常にキー(フォーカスされたウィンドウ/アプリケーションに関係なく)または他の何か?

より多くのコンテキストが必要です。

コンソールアプリを作成している場合は、Console.ReadKeyなどを確認する必要があります...

http://msdn.Microsoft.com/en-us/library/system.console.readkey.aspx

1
Martin Peck

KeyUpイベントも使用できます。私はそれを好む。

private void Window_KeyUp(object sender, System.Windows.Input.KeyEventArgs e) {
     if (e.Key == Key.Escape) {
         //WHAT WILL HAPPEN INSERT HERE
     }
}
0
Spratly

Event KeyPressを使用...

   //Escape 
   if (e.KeyChar == '')
   {
            this.DialogResult = DialogResult.Cancel;
            e.Handled = true;
   }
0
JxDarkAngel