检测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 " );
    }
}

 

 

你可能感兴趣的:(text)