我有一个简单的登录表单,我已将其接受按钮属性设置为“确定”按钮, 我有一个文本框“用户名”,我设置它的KeyDown事件来做一些处理。 Ok已启用设置为false。
btnOk.Enbled = false;
this.AcceptButton = btnOk;
txtUsername.KeyDown += new KeyEventHandler(KeyDownHandle);
当我点击输入用户名文本框时,我会进行一些处理,然后将启用的接受按钮设置为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”,问题就解决了,但这不是我正在寻找的。
答案 0 :(得分: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();
}
}