当前位置: 首页 > 知识库问答 >
问题:

为什么在MessageBox之后KeyDown事件处理程序不能正常工作。在C#中显示()?那我该怎么提醒用户呢?

空英达
2023-03-14

只有在注释掉消息框时,这段代码才能正常工作。Show()

private void textBox1_KeyDown( object sender, KeyEventArgs e ) {
    if( textBox1.Text.Contains('.') && ( e.KeyCode == Keys.Decimal || e.KeyCode == Keys.OemPeriod ) ) {
        MessageBox.Show("More than one decimal point!");
        e.SuppressKeyPress = true;
    }
}

原因是什么?以及如何提醒用户?

那我怎么能提醒你按错键了?

共有2个答案

周鸿运
2023-03-14

当您显示消息框时,它会从TextBox中离开焦点,并且您的代码e. SuppressKeyPress=true此时不执行。

您应该在处理输入后放置您的MessageBox

e.SuppressKeyPress = true;
MessageBox.Show("More than one decimal point!");
史修明
2023-03-14

你应该试试这个

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
    if(textBox1.Text.Contains('.') && e.KeyChar == '.')
    {
        e.Handled = true;
        MessageBox.Show("More than one decimal point!");
    }
}

它最好适用于KeyPress而不是KeyDown

当我发现这一点时,我得到了一个很棒的页面,讲述了键盘按下和按键事件之间的区别。网

 类似资料:
  • 我在主页组件中有这个代码,当按下向下/向上箭头键时,什么也没有发生。我刚刚意识到,当用ctrl键按箭头键时,eventhandler可以正常工作。我到处找,但什么也没找到。有人能帮忙吗?我的浏览器是Chrome v.96。React版本17.0.2,节点v.16.13.1

  • 我正在使用Java NIO,由于某种原因,我无法获得files.isHidden()来返回正确的布尔值。程序只是检查目录是否隐藏,如果隐藏,则使其可见,如果不隐藏,则使其隐藏。这就是我所拥有的: 它继续返回false并隐藏目录,尽管目录被隐藏。下面的代码使用旧的File类和Path类可以很好地工作。

  • 问题内容: 我在新线程中创建处理程序时遇到问题。这是我的代码: 但这引发了错误!有人可以向我解释一下吗?非常感谢! 这是我的错误的详细信息: 问题答案: 您也可以这样使用: ■找一个与之相关联,因此这将不会抛出异常。

  • 我一直在用SceneBuilder 9.0.1在IntelliJ上做一个项目。昨天,在NetBeans 8上做了一个小型项目,12之后由于某种原因没有启动新项目。一旦关闭所有内容并打开IntelliJ项目,fxml文档就无法使用SceneBuilder打开。对于这个问题,需要注意以下几点: 我使用的是9.0.1版,尽管v15也有同样的问题, 其中一个fxml文件的示例如下: 请帮助。

  • 因此,我正在运行一个脚本,该脚本调用: 在ubuntu上运行时似乎工作良好,但当我使用Git Bash在Windows上运行时,会出现以下错误:

  • 我在处理器中使用的“命名查询”。process()方法不起作用 --为什么-我该怎么修? 谢谢您的帮助!:-) 这是有问题的“命名查询”的JPA实体。。。 即。, “命名查询”用于流程方法代码(如下),但不起作用。。。 即。, 处理器。此驼峰路线中使用了process()方法。。。 即。, stacktrace的一个片段描述了错误: 即。, (尝试过apachecamel.apache.org网站