WPF:将Ctrl + Enter转换为TextBox上的Enter

时间:2012-05-10 15:11:53

标签: wpf textbox keydown

我有一个多行文本框,Ctrl + Enter会触发一个特定的操作。显然,输入会在文本框中创建一个新行。

现在我想反转两个功能,即Ctrl + Enter应该创建一个新行,Enter应该触发我的特定动作。一切正常,除非我需要使用Ctrl-Enter创建一个新行。

我试过这个解决方案: How can I programmatically generate keypress events in C#? 但它不起作用,因为当我为Enter键提示(预览)Keydown / Up时,仍然按下Ctrl键,所以我最终在文本框上模拟另一个Ctrl-Enter,这没有效果。 / p>

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:3)

这就是我最终在文本框上模拟“Enter”的方式,即使Ctrl键已关闭:

var caretIndex = MyTextBox.CaretIndex;
MyTextBox.Text = MyTextBox.Text.Insert(caretIndex, "\r");
MyTextBox.CaretIndex = caretIndex + 1;

答案 1 :(得分:1)

如果你想真正模拟一些按键,而不仅仅是复制它的功能,你应该使用InputSimulator,这是一个很棒的开源库。 模拟Ctrl + Enter将如下所示:

InputSimulator.SimulateModifiedKeyStroke(VirtualKeyCode.CONTROL, VirtualKeyCode.RETURN);