我正在制作一个聊天窗口,当用户按下TextBox上的Enter键时,我想发送消息。但是我也想让用户使用Ctrl+Enter键输入中断行。
问题是当我设置AcceptsReturn=True时,用户按下KeyDown事件在TextBox附加行中断后触发的Enter键,所以发送的消息总是在末尾包含一个行中断。是否有一种方法在允许Ctrl+Enter的同时禁用Enter键?
我想出了一种最丑陋的方法,那就是当按Enter键时,先移除光标前的字母,然后处理它。但还有更好的方法吗?
发布于 2014-07-15 07:55:18
我不能百分之百地确定您的需求,所以您可能需要稍微修改一下这段代码,但是您应该可以通过将 property of KeyEventArgs
设置为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;
}
}
https://stackoverflow.com/questions/24752635
复制相似问题