web-dev-qa-db-ja.com

TextBoxでEnterキーが押されたことを確認するにはどうすればよいですか?

基本的には、イベントが発生したときに ENTER キーが押されました。私はすでにこれを試しました:

private void input_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.Equals("{ENTER}"))
        {
            MessageBox.Show("Pressed enter.");
        }
    }

しかし、MessageBoxは表示されません。これどうやってするの?

24
Jon

これを試してみてください...

private void input_KeyDown(object sender, KeyEventArgs e) 
{                        
    if(e.KeyData == Keys.Enter)   
    {  
        MessageBox.Show("Pressed enter.");  
    }             
}
34
Chris Gessler

@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)
    }
}
2
OldDog

フォームに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);
    }
}
2
AecorSoft

あなたは実際に言うことができます

private void input_KeyDown(object sender, KeyEventArgs e)
{
    if (e.Key == Key.Enter)
    {
        MessageBox.Show("Pressed enter.");
    }
}
2
Makusium

これを行うこともできます:

  private void input_KeyDown(object sender, KeyEventArgs e) 
  {                        
    if(e.KeyCode== Keys.Enter)   
    {  
        //Your business logic here.
    }             
  }

KeyCodeKeyDataの唯一の違いは、KeyCodeKeyCodeと修飾子の組み合わせを検出できることです(CTRL、Shift + Aなど)。ここに。

0
Willy David Jr