繁体   English   中英

keyDown事件不适用于文本框

[英]keyDown event is not working on textbox

我有一个简单的登录表单,我已将它的接受按钮属性设置为“确定”按钮,我有一个文本框“用户名”,我设置它的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();
    }
}

然后我在密码文本框中写密码并按Enter键以便触发“OK.Click”。

但问题是keyDown无法正常工作,因为“接受按钮”。
我该怎么做才能解决这个问题?

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

为什么不从this.AcceptButton = btnOk删除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();
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM