为何当单击Enter键时,不触发图像单击事件
登录页面的提交功能是由图像的单击事件实现的,想让用户按下回车键时,也提交页面,于是按照大家的帮助。先,获得enter键,然后判断调用图像单击事件,过程如下:图像单击事件:
private void Loginbutton_Click(object sender, EventArgs e)
{
string username = UserName.Text;
string password = PassWord.Text;
username = username.Trim();
password = password.Trim();
string js = JSXZ.Text;
}
按下enter键,触发图像单击事件:
private void Login_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
this.Loginbutton_Click(null, null);
}
}
问题:1、运行程序,按下enter键没有任何反应。
2、图像单击事件调用程序“this.Loginbutton_Click(null, null);”对吗?中间的“null”是不是存在问题?
请多多指教。。。 --------------------编程问答-------------------- 可能你获得焦点的是TEXTBOX而不是FORM,所以你用FORM的键盘事件可能无效 --------------------编程问答-------------------- Loginbutton.PerformClick
设置窗体的AcceptButton为要执行的按钮
Loginbutton_Click(Loginbutton, null);
--------------------编程问答--------------------
“Loginbutton.PerformClick”,这是什么东东?
图像单击事件调用程序“this.Loginbutton_Click(null, null);”对吗?
--------------------编程问答-------------------- 按下enter键,触发图像单击事件 有误!
--------------------编程问答-------------------- 两个可能,第一种是:调用 Loginbutton_Click(object sender, EventArgs e)方法失败
第二种是,FORM没有获得焦点
把Loginbutton_Click方法里的内容直接copy到Login_KeyDown方法里面,就可以检测出问题在那了。 --------------------编程问答--------------------
据推测,应该是“调用 Loginbutton_Click(object sender, EventArgs e)方法失败”,因为在下换用了另一种方式,也不行。
--------------------编程问答-------------------- 2、图像单击事件调用程序“this.Loginbutton_Click(null, null);”对吗?中间的“null”是不是存在问题?
改成:
Loginbutton_Click(sender, e);试试 --------------------编程问答-------------------- Loginbutton_Click(object sender, EventArgs e)中没有使用sender和e所以我觉得this.Loginbutton_Click(null, null)这样调用应该没有问题 --------------------编程问答--------------------
什么意思,能详细点吗?看不懂啊。
“Loginbutton.PerformClick“这是什么?
--------------------编程问答-------------------- 试试
this.Loginbutton_Click(this, null);
--------------------编程问答-------------------- 试下keypress(不知道写错了没有) --------------------编程问答--------------------
这个应该不会错吧。。。 --------------------编程问答-------------------- 为何不把 Loginbutton_Click 中的
string username = UserName.Text;
string password = PassWord.Text;
username = username.Trim();
password = password.Trim();
string js = JSXZ.Text;
封装为一个方法 两个事件都调用这个方法呢?
private void Loginbutton_Click(object sender, EventArgs e)
{
Login();
}
private void Login_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
Login();
}
}
public void Login()
{
string username = UserName.Text;
string password = PassWord.Text;
username = username.Trim();
password = password.Trim();
string js = JSXZ.Text;
}
--------------------编程问答-------------------- ` --------------------编程问答-------------------- 要触发键盘事件,首先控件要用焦点哦,你保证这点了吗?
补充:.NET技术 , C#