zoukankan      html  css  js  c++  java
  • 检测TextBox的回车键事件

    事情是这样的,项目中使用了DotNetBar组件,其中一个界面使用了TextBoxX,并设置为多行输入。运行后发现这个输入框不接收回车事件。原因是DotNetBar把控件的回事事件变成了Tab事件,使得按回车可以在控件之间进行切换。但对于多行的TextBoxX,明显是要回车的,看来这是DotNetBar的一个BUG了(也许是一个未考虑到的应用场景)。既然它没有处理,我手动处理一下也行,也就是加一个事件几行代码的事情。于是有了下面的代码:

    private void txtContent_KeyDown(object sender, KeyEventArgs e)
    {
        
    if (e.KeyCode == Keys.Enter) && !e.Control && !e.Shift && !e.Alt)
        {
            e.Handled 
    = true;
            txtContent.AppendText(
    "\r\n");
        }
    }

    然后就杯具了,if中的代码不论怎么样都不执行。断点调试后才发现,这两个值e.KeyCode 和 Keys.Enter这两个值确实不相等,看来DotnetBar的控件在内部进行了一些处理。最后试了下面的方法才生效:

    if ((e.KeyCode == (Keys.Enter & ~Keys.MButton)) && !e.Control && !e.Shift && !e.Alt)

    心中无限感慨,人不能NB到连这样的参数也要修改!最后的完整的代码是:

    private void txtContent_KeyDown(object sender, KeyEventArgs e)
    {
        
    if ((e.KeyCode == (Keys.Enter & ~Keys.MButton)) && !e.Control && !e.Shift && !e.Alt)
        {
            e.Handled 
    = true;
            e.SuppressKeyPress 
    = true;
            txtContent.AppendText(
    "\r\n");
        }
    }
  • 相关阅读:
    VMware虚拟机找不到USB设备该怎么办?
    关于Ubuntu锁屏后,无法输入密码
    设计模式-第一篇之单例模式
    Java-多线程第一篇多线程相关认识(1)
    Quartz-第二篇 使用quartz框架定时推送邮件
    Quartz-第一篇 认识Quartz
    Web Service-第一篇什么是Web Service
    Linux-第二篇常用命令
    Linux-第一篇linux基本认识
    Oracle-常见的错误
  • 原文地址:https://www.cnblogs.com/qkhh/p/1846437.html
Copyright © 2011-2022 走看看