10

我有以下代码在按下输入/返回时不显示消息框。

对于任何其他键(即字母/数字),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 回答
0
void cbServer_PreviewKeyDown(object sender, System.Windows.Forms.PreviewKeyDownEventArgs e)
    {

        // Check if User Presses Enter
        if (e.KeyCode == System.Windows.Forms.Keys.Return)
        {
            // Here: user pressed ENTER key

        }
        else
        {
            // Here: user did not press ENTER key
        }
    }
于 2020-06-07T00:18:31.080 回答