在WPF中处理文本框上的Enter事件时,如何接受Ctrl+Enter作为返回
本文关键字:何接受 Ctrl+Enter 返回 事件 Enter 处理 WPF 文本 | 更新日期: 2023-09-27 18:12:52
我正在制作一个聊天窗口,我想在用户按下文本框上的Enter键时发送消息。但是我还想让用户使用Ctrl+ enter键输入换行符。
问题是当我设置AcceptsReturn=True并且用户按下Enter键时,KeyDown事件在TextBox附加换行符后触发,因此发送的消息将始终在末尾包含换行符。是否有一种方法可以禁用Enter键,同时仍然允许Ctrl+Enter?
我想出了最难看的方法,即按下Enter键时先删除光标前的字母,然后再处理它。但是有没有更好的办法呢?
我不是100%确定你的要求,所以你可能不得不把这段代码稍微调整一下,但是你应该能够通过将KeyEventArgs
的e.Handled
属性设置为false
来做你想做的。根据链接页面,这是:
获取或设置一个值,该值指示路由事件在传播路由时的事件处理的当前状态。
在简单的英语中,这只是意味着我们可以阻止它被进一步使用。试试这样做:
private void TextBox_PreviewKeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Enter) // if Enter key is pressed...
{
// ... and Ctrl key is NOT... then ignore it
if (Keyboard.Modifiers != ModifierKeys.Control) e.Handled = true;
}
}