10

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

その他のキー (つまり、文字/数字) の場合、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 にあると思ったので、それを投稿しただけです。

4

4 に答える 4

9

フォーム デザイナー クラス (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();
    }
于 2012-08-16T09:29:33.137 に答える
7

これは、Enter TextChangedイベントを押しても発生しないためです。

于 2012-08-16T09:54:26.993 に答える
0
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 イベントを使用して、テキスト ボックスまたは入力に表示される前にキーを検出します。

于 2016-11-07T04:37:50.680 に答える