1

我有一个简单的登录表单,我已将其接受按钮属性设置为“确定”按钮,并且我有一个文本框“用户名”,我将其设置为 KeyDown 事件以进行一些处理。Ok 已启用设置为 false。

btnOk.Enbled = false;  
this.AcceptButton = btnOk;
txtUsername.KeyDown += new KeyEventHandler(KeyDownHandle);

当我在用户名文本框中按 Enter 键时,我会进行一些处理,然后将启用的接受按钮设置为 true。

private void KeyDownHandle(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Enter)
    {
        // some processing
        btnOk.Enabled = true;
        txtPassword.Focus();
    }
}

然后我在密码文本框中输入密码并按回车键,因此触发“OK.Click”。

但问题是 keyDown 不起作用,因为“接受按钮”。
我能做些什么来解决这个问题?

编辑:只想说如果我将acceptButton设置为“none”,问题就解决了,但这不是我想要的。

4

1 回答 1

4

为什么不this.AcceptButton = btnOk从构造函数中删除(我想)并将其放入 KeyDownHandler,这样btnOk只有在启用并插入用户名之后才会接受 Enter 键。所以代码应该是这样的:

btnOk.Enabled = false;
txtUsername.KeyDown += new KeyEventHandler(textBox1_KeyDown);
btnOk.Click += new EventHandler(button1_Click);


private void KeyDownHandle(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Enter)
    {
        // some processing
        btnOk.Enabled = true;
        this.AcceptButton = btnOk;
        txtPassword.Focus();
    }
}
于 2013-02-24T14:48:17.733 回答