在winforms应用程序中捕捉键盘输入事件

在winforms应用程序中捕捉键盘输入事件,winforms,events,Winforms,Events,我正在开发winforms应用程序。我有一个简单的登录屏幕,当我按下enter键时,我会在KeyUp(…)事件中捕捉到它,如果凭证无效,我会显示一个消息框。 之后,当我再次按Enter键时,MessageBox和LoginForm都会捕捉到它,并且有一个无限循环,首先MessageBox消失,然后LoginForm以无效凭据输入,MessageBox再次显示。 键事件应仅对MessageBox处于活动状态,而我需要再次按Enter键才能再次提交表单 我如何处理这种情况?您应该处理按下键事件 当消

我正在开发winforms应用程序。我有一个简单的
登录屏幕
,当我按下
enter键
时,我会在
KeyUp(…)事件中捕捉到它
,如果凭证无效,我会显示一个
消息框
。 之后,当我再次按Enter键时,MessageBox和LoginForm都会捕捉到它,并且有一个无限循环,首先MessageBox消失,然后LoginForm以无效凭据输入,MessageBox再次显示。
键事件
应仅对MessageBox处于活动状态,而我需要再次按Enter键才能再次提交表单


我如何处理这种情况?

您应该处理
按下键事件

当消息框打开时,KeyDown将被它吞没。

(与KeyUp相反,它会在关闭后触发)

您应该处理
KeyDown
事件

当消息框打开时,KeyDown将被它吞没。

(与KeyUp相反,KeyUp在关闭后会触发)

我建议您创建一个登录按钮来处理凭证验证,然后将该按钮设置为表单的默认按钮。它是为处理这类问题而构建的。i、 e.按下enter键后,将显示为单击了按钮


请参阅。

我建议您创建一个登录按钮来处理凭证验证,然后将该按钮设置为表单的默认按钮。它是为处理这类问题而构建的。i、 e.按下enter键后,将显示为单击了按钮


请参阅。

请不要将随机单词突出显示为“代码”。@SLaks:应该说“请
不要
突出显示
随机
单词
代码”。)有些单词对我很有意义(:好的,我会注意的。@gesus:这并不意味着它们是
code
:)请不要将随机单词突出显示为“code”。@SLaks:应该说“请
不要
随机
单词
突出显示为
code”。)有些词对我很有意义(:好的,我会注意的。@gesus:这并不意味着它们是
code
:)