キーが押された場合にC#でメソッドを開始する方法はありますか?例えば、 Esc?
WinFormsアプリケーションを作成しています。ユーザーはテキストボックスに入力し、すべてを削除したい場合はクリックするだけです esc キーボードのキー
KeyDownイベント を処理する必要があると思います。
テキストボックスのOnKeyPressイベントを使用し、イベントで
if(e.KeyCode==Keys.Escape)
{
yourTextBox.Text = string.Empty;
}
他の人が述べたように、適切なコントロールの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;
}
}
誰かがこれを行う方法を探している場合コンソールアプリケーション
if (Console.ReadKey().Key == ConsoleKey.Escape)
{
return;
}
フォームプロパティ "KeyPreview"をtrueに変更する必要がありますイベントが発生しません。これらのイベントを単独で処理しても、イベントが正しいとしても何も起こりません。適切なイベントハンドラーをサブスクライブしても、実際には何も起こらないように見えます。
プロパティの最初に> KeyPreview:True
次に:
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Escape)
{
//call your method here
}
}
コンソールアプリケーション、WinFormsアプリケーションなどを作成していますか?キャプチャしようとしていますか ESC 常にキー(フォーカスされたウィンドウ/アプリケーションに関係なく)または他の何か?
より多くのコンテキストが必要です。
コンソールアプリを作成している場合は、Console.ReadKeyなどを確認する必要があります...
http://msdn.Microsoft.com/en-us/library/system.console.readkey.aspx
KeyUpイベントも使用できます。私はそれを好む。
private void Window_KeyUp(object sender, System.Windows.Input.KeyEventArgs e) {
if (e.Key == Key.Escape) {
//WHAT WILL HAPPEN INSERT HERE
}
}
Event KeyPressを使用...
//Escape
if (e.KeyChar == '')
{
this.DialogResult = DialogResult.Cancel;
e.Handled = true;
}