原来的情况是:我在输入框中输入值后,再点击确定按钮,该对话框会自动关闭,且该模式对话框的返回值(DialogResult)是OK.
现在我在这个输入框的KeyPress中加了点判断,当按下的键的是回车键时,直接调用确定按钮的点击事件btn_OK_Click,传的参数用的是(sender,e),但是执行时该对话框没有自动关闭,但是通过调试,我知道它确实执行了确定按钮的点击事件。
后来我一想是不是KeyPress中的sender与btn_OK_Click中的sender不一样呢,于是我在KeyPress事件的调用代码中使用了btn_OK_Click(btn_OK, e),发现执行结果还是一样,也就是说对话框没有自动关闭。
想请教下,到底是怎么回事,我不太明白呀。
11 个解决方案
#1
设置窗体的AcceptButton=确定按钮就行了
#2
在原来在keypress里面的代码放到form1_Closing事件里面
#3
if (e.KeyData == Keys.Enter)
{
button1_Click(this, e);
}
试了一下。没问题。keypress键设置错了。
keyup比较好一些。
{
button1_Click(this, e);
}
试了一下。没问题。keypress键设置错了。
keyup比较好一些。
#4
to herojams: 你似乎没有看懂我的问题。
1.将窗体的AcceptButton=确定按钮,非常不好。我要的是在输入框中输入数据时,当输入的是回车键时,立即去执行确定按钮的点击事件。你说的这种方法,虽然能达到我说的效果,但是当我并未输入数据时,不小心按了回车键,窗体也关闭了,会让许多人觉得莫名其妙的!
2.在原来在keypress里面的代码放到form1_Closing事件里面:在keyPress事件里,我可能取得当前按下的键是不是回车键,但是如果将我的代码放在form1_Closing事件里,我怎么能判断当前按下的键是不是回车键呢,因为参数类型不一样了。
1.将窗体的AcceptButton=确定按钮,非常不好。我要的是在输入框中输入数据时,当输入的是回车键时,立即去执行确定按钮的点击事件。你说的这种方法,虽然能达到我说的效果,但是当我并未输入数据时,不小心按了回车键,窗体也关闭了,会让许多人觉得莫名其妙的!
2.在原来在keypress里面的代码放到form1_Closing事件里面:在keyPress事件里,我可能取得当前按下的键是不是回车键,但是如果将我的代码放在form1_Closing事件里,我怎么能判断当前按下的键是不是回车键呢,因为参数类型不一样了。
#5
直接调用有什么用,就和调用一个方法一样不会触发后继动作,
调用
btn_OK.PerformClick();
调用
btn_OK.PerformClick();
#6
to zanfeng:你的方法我也试过了,但是效果还是一样。
我现在的问题不是btn_OK_Click没有执行,而是通过在KeyPress中调用btn_OK_Click和直接点击确定按钮来执行btn_OK_Click的效果不一样(窗口没有自动关闭和窗口会自动关闭),我想问题可能就出在这个确定按钮的DialogResult属性上。
还望高人指教,如果.NET也是开源的就好了,呵呵
我现在的问题不是btn_OK_Click没有执行,而是通过在KeyPress中调用btn_OK_Click和直接点击确定按钮来执行btn_OK_Click的效果不一样(窗口没有自动关闭和窗口会自动关闭),我想问题可能就出在这个确定按钮的DialogResult属性上。
还望高人指教,如果.NET也是开源的就好了,呵呵
#7
调用btn_OK.PerformClick();就会关闭的
#8
5楼高人呀,我的问题因你而解决,太感谢了。能讲讲PerformClick和直接Click的区别吗?
#9
直接调用btn_OK_Click等于调用一个有2个参数的方法一样,而调用PerformClick我估计内部是发左键点击消息WM_LBUTTONDOWN给按钮,模拟点击
#10
to wartim: 根据你的意思,就是调用PerformClick时,模拟了鼠标的左键点击事件,因此效果与点击按钮完全一样,谢谢!
#11
学习了,虽说不作window方面程序
#1
设置窗体的AcceptButton=确定按钮就行了
#2
在原来在keypress里面的代码放到form1_Closing事件里面
#3
if (e.KeyData == Keys.Enter)
{
button1_Click(this, e);
}
试了一下。没问题。keypress键设置错了。
keyup比较好一些。
{
button1_Click(this, e);
}
试了一下。没问题。keypress键设置错了。
keyup比较好一些。
#4
to herojams: 你似乎没有看懂我的问题。
1.将窗体的AcceptButton=确定按钮,非常不好。我要的是在输入框中输入数据时,当输入的是回车键时,立即去执行确定按钮的点击事件。你说的这种方法,虽然能达到我说的效果,但是当我并未输入数据时,不小心按了回车键,窗体也关闭了,会让许多人觉得莫名其妙的!
2.在原来在keypress里面的代码放到form1_Closing事件里面:在keyPress事件里,我可能取得当前按下的键是不是回车键,但是如果将我的代码放在form1_Closing事件里,我怎么能判断当前按下的键是不是回车键呢,因为参数类型不一样了。
1.将窗体的AcceptButton=确定按钮,非常不好。我要的是在输入框中输入数据时,当输入的是回车键时,立即去执行确定按钮的点击事件。你说的这种方法,虽然能达到我说的效果,但是当我并未输入数据时,不小心按了回车键,窗体也关闭了,会让许多人觉得莫名其妙的!
2.在原来在keypress里面的代码放到form1_Closing事件里面:在keyPress事件里,我可能取得当前按下的键是不是回车键,但是如果将我的代码放在form1_Closing事件里,我怎么能判断当前按下的键是不是回车键呢,因为参数类型不一样了。
#5
直接调用有什么用,就和调用一个方法一样不会触发后继动作,
调用
btn_OK.PerformClick();
调用
btn_OK.PerformClick();
#6
to zanfeng:你的方法我也试过了,但是效果还是一样。
我现在的问题不是btn_OK_Click没有执行,而是通过在KeyPress中调用btn_OK_Click和直接点击确定按钮来执行btn_OK_Click的效果不一样(窗口没有自动关闭和窗口会自动关闭),我想问题可能就出在这个确定按钮的DialogResult属性上。
还望高人指教,如果.NET也是开源的就好了,呵呵
我现在的问题不是btn_OK_Click没有执行,而是通过在KeyPress中调用btn_OK_Click和直接点击确定按钮来执行btn_OK_Click的效果不一样(窗口没有自动关闭和窗口会自动关闭),我想问题可能就出在这个确定按钮的DialogResult属性上。
还望高人指教,如果.NET也是开源的就好了,呵呵
#7
调用btn_OK.PerformClick();就会关闭的
#8
5楼高人呀,我的问题因你而解决,太感谢了。能讲讲PerformClick和直接Click的区别吗?
#9
直接调用btn_OK_Click等于调用一个有2个参数的方法一样,而调用PerformClick我估计内部是发左键点击消息WM_LBUTTONDOWN给按钮,模拟点击
#10
to wartim: 根据你的意思,就是调用PerformClick时,模拟了鼠标的左键点击事件,因此效果与点击按钮完全一样,谢谢!
#11
学习了,虽说不作window方面程序