Enter 键按下事件处理程序
我想在按下回车键时捕获文本框中的文本。我正在使用 WPF/Visual Studio 2010/.NET 4。我不知道标记中要使用什么事件处理程序?我也想对 maskedtextbox 做同样的事情。
I want to capture the text from the textbox when enter key is hit. I am using WPF/visual studio 2010/.NET 4. I dont know what event handler to be used in the tag ? I also want to do the same for maskedtextbox.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
KeyDown 或 KeyUp。
Either KeyDown or KeyUp.
您还可以在 WPF 中使用 PreviewKeyDown:
或在 C# 中:
然后在附加类中:
You can also use PreviewKeyDown in WPF:
or in C#:
And then in the attached class:
KeyDown 事件仅在标准 TextBox 或 MaskedTextBox 上由“普通”输入键触发,而不是 ENTER 或 TAB 等。
我们可以通过重写 IsInputKey 方法来获取像 ENTER 这样的特殊键:
然后可以通过以下方式使用 KeyDown 事件:
The KeyDown event only triggered at the standard TextBox or MaskedTextBox by "normal" input keys, not ENTER or TAB and so on.
One can get special keys like ENTER by overriding the IsInputKey method:
Then one can use the KeyDown event in the following way:
在 WPF 中,TextBox 元素将没有机会使用“Enter”按钮来创建 KeyUp 事件,除非您不设置属性:AcceptsReturn="True"。
但是,它不能解决处理 TextBox 元素中的 KeyUp 事件的问题。按“ENTER”后,您将在 TextBox 中看到一个新的文本行。
我通过使用 Bubble 事件策略解决了使用 TextBox 元素的 KeyUp 事件的问题。它又短又简单。您必须在某些(任何)父元素中附加 KeyUp 事件处理程序:
XAML:
C# 逻辑部分(KeyUp 事件处理程序附加到网格元素):
结果:
In WPF, TextBox element will not get opportunity to use "Enter" button for creating KeyUp Event until you will not set property: AcceptsReturn="True".
But, it would`t solve the problem with handling KeyUp Event in TextBox element. After pressing "ENTER" you will get a new text line in TextBox.
I had solved problem of using KeyUp Event of TextBox element by using Bubble event strategy. It's short and easy. You have to attach a KeyUp Event handler in some (any) parent element:
XAML:
C# logical part (KeyUp Event handler is attached to a grid element):
Result:
对于那些难以捕获 TextBox 或其他输入控件上的 Enter 键的人来说,如果您的 Form 定义了 AcceptButton,则您将无法使用 KeyDown 事件来捕获 Enter。
您应该做的是在表单级别捕获 Enter 键。将此代码添加到表单中:
For those who struggle at capturing Enter key on TextBox or other input control, if your Form has AcceptButton defined, you will not be able to use KeyDown event to capture Enter.
What you should do is to catch the Enter key at form level. Add this code to the form: