基本的には、イベントが発生したときに ENTER キーが押されました。私はすでにこれを試しました:
private void input_KeyDown(object sender, KeyEventArgs e)
{
if (e.Equals("{ENTER}"))
{
MessageBox.Show("Pressed enter.");
}
}
しかし、MessageBoxは表示されません。これどうやってするの?
これを試してみてください...
private void input_KeyDown(object sender, KeyEventArgs e)
{
if(e.KeyData == Keys.Enter)
{
MessageBox.Show("Pressed enter.");
}
}
@Willy David Jrの回答に追加するには、実際のキーコードを使用することもできます。
private void input_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyChar == 13)
{
MessageBox.Show("Pressed enter.");
}
}
Keypressイベントを使用できます。 「Enter」キープレスを探しているだけの場合は、修飾キー(ShiftやCtrlなど)を気にする必要がないため、ほとんどの場合、Keypressの代わりにKeyDownを使用します。 2番目の利点は、他の回答のanyを実装した後にほぼ常に尋ねられる質問に答えることです:「参照されたコードを使用するときに、「Enter」を押すとビープ音が鳴るのはなぜですか?」これは、Keypressイベントを処理する必要があるためです。 Keypressを使用すると、両方を1か所で解決できます。
private void input_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)Keys.Enter)
{
// Your logic here....
e.Handled = true; //Handle the Keypress event (suppress the Beep)
}
}
フォームにAcceptButtonが定義されている場合、KeyDownを使用してEnterをキャプチャすることはできません。
あなたがすべきことは、それをフォームレベルでキャッチすることです。次のコードをフォームに追加します。
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if ((this.ActiveControl == myTextBox) && (keyData == Keys.Return))
{
//do something
return true;
}
else
{
return base.ProcessCmdKey(ref msg, keyData);
}
}
あなたは実際に言うことができます
private void input_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Enter)
{
MessageBox.Show("Pressed enter.");
}
}
これを行うこともできます:
private void input_KeyDown(object sender, KeyEventArgs e)
{
if(e.KeyCode== Keys.Enter)
{
//Your business logic here.
}
}
KeyCode
とKeyData
の唯一の違いは、KeyCode
がKeyCode
と修飾子の組み合わせを検出できることです(CTRL、Shift + Aなど)。ここに。