解决dotnetbar textbox控件在按Enter键后失去焦点的问题

DotnetBar提供的TextBox控件修改了默认的行为,当用户按Enter键的时候,会将焦点跳转到其它的控件上,而Ctrl + Enter才会是默认的行为。有时候界面的某个输入框并不需要这样的功能,比如说多行的TextBox,就需要Enter键另起一行, 并且焦点仍在TextBox上。

要解决这个问题,首先需要设置TextBoxAcceptEnterTrue,不过仅仅设置这个属性还不起作用。还需要响应TextBoxKeyDown事件,当KeycodeEnter的时候,设置Handletrue, 并且设置SupressKeyDownEventtrue.

有时候这个办法还不起作用。DotNetBar有一个TextBoxItem控件,用这个方法,即使对它封装的TextBox控件响应事件,也不起作用。可以用另一个办法,在响应KeyDown事件时,开始一个Timer(或一个新的线程),把timer的时间设置得特别短,如50毫秒,在响应函数中重新将焦点设回到TextBox

个人主页同步更新

原文地址:https://www.cnblogs.com/qkhh/p/2001257.html