web-dev-qa-db-ja.com

Enterキーの検出C#

Enter/Returnキーを押したときにMessageBoxが表示されない次のコードがあります。

その他のキー(文字/数字など)の場合、メッセージボックスはFalseを示します。

private void cbServer_TextChanged(object sender, EventArgs e)
{
    if (enterPressed)
    {
        MessageBox.Show("Enter pressed");
    }
    else
        MessageBox.Show("False");
}

private void cbServer_Keydown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Enter || e.KeyCode == Keys.Return)
    {
        enterPressed = true;
        MessageBox.Show("Enter presssed: " + enterPressed);

    }
    else
        enterPressed = false;
}

何か案は?

編集:コードの上で、問題は_Keydownにあると思ったので、それだけを投稿しました。

8
k1f1

これは、 EnterTextChangedイベントは発生しません。

5
Reniuz

あなたのフォームデザイナークラス(formname.designer.cs)にこれを追加してください:

this.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.Login_KeyPress);

このコードをバックボーンコード(formname.cs)に追加します。

void Login_KeyPress(object sender, KeyPressEventArgs e)
    {
        if (e.KeyChar == (char)13)
            MessageBox.Show("ENTER has been pressed!");
        else if (e.KeyChar == (char)27)
            this.Close();
    }
private void textBox_PreviewKeyDown(object sender, KeyEventArgs e)
 {
            if (e.Key == Key.Enter)
            {
                MessageBox.Show("Enter key pressed");
            }
            else if (e.Key == Key.Space)
            {
                MessageBox.Show("Space key pressed");
            }
}

テキストボックスまたは入力に表示される前にPreviewKeyDownイベントを使用してキーを検出します

0