使用 space 关闭消息框
Closing of a messagebox with space
简单的问题,但不知道如何做。
我有一个只有一个 "OK" 按钮的消息框,它通过在输入中捕获无效的 datatypes/formats 出现。
我希望在按下 Space 后按下 "OK" 按钮(并且仅按下 Space)
我想我需要某种事件,它会检查 space 按钮是否已按下(但仅按下)此消息框。但不知何故,对于这样一个简单的任务来说,这听起来有点不方便。
好吧,根据你的标签猜测。我认为您在谈论 C# 中的 Window 表单。
是的,有办法做到这一点。但不像消息框那么简单。您所要做的就是:
- 创建
Form
并将其设计为 MessageBox
- 覆盖
PreviewKeydown
事件处理程序(或覆盖 KeyPress
事件处理程序也可以)
- 然后匹配按下
Space
键时的大小写。
下面的示例代码可以给您一个想法:
switch (e.KeyCode)
{
case Keys.Space:
//Call The Event handler for Ok Button
e.Handled = true;
e.Suppressed = true;
break;
}
(注意:您还可以为 PreviewKeyDown
事件创建新的事件处理程序而不是覆盖。)
- 因为您想将其显示为消息框,所以在显示表单时使用
ShowDialog()
而不是 Show() 方法。
简单的问题,但不知道如何做。
我有一个只有一个 "OK" 按钮的消息框,它通过在输入中捕获无效的 datatypes/formats 出现。
我希望在按下 Space 后按下 "OK" 按钮(并且仅按下 Space)
我想我需要某种事件,它会检查 space 按钮是否已按下(但仅按下)此消息框。但不知何故,对于这样一个简单的任务来说,这听起来有点不方便。
好吧,根据你的标签猜测。我认为您在谈论 C# 中的 Window 表单。 是的,有办法做到这一点。但不像消息框那么简单。您所要做的就是:
- 创建
Form
并将其设计为MessageBox
- 覆盖
PreviewKeydown
事件处理程序(或覆盖KeyPress
事件处理程序也可以) - 然后匹配按下
Space
键时的大小写。
下面的示例代码可以给您一个想法:
switch (e.KeyCode)
{
case Keys.Space:
//Call The Event handler for Ok Button
e.Handled = true;
e.Suppressed = true;
break;
}
(注意:您还可以为 PreviewKeyDown
事件创建新的事件处理程序而不是覆盖。)
- 因为您想将其显示为消息框,所以在显示表单时使用
ShowDialog()
而不是 Show() 方法。