我有一个多行文本框,Ctrl + Enter会触发一个特定的操作。显然,输入会在文本框中创建一个新行。
现在我想反转两个功能,即Ctrl + Enter应该创建一个新行,Enter应该触发我的特定动作。一切正常,除非我需要使用Ctrl-Enter创建一个新行。
我试过这个解决方案: How can I programmatically generate keypress events in C#? 但它不起作用,因为当我为Enter键提示(预览)Keydown / Up时,仍然按下Ctrl键,所以我最终在文本框上模拟另一个Ctrl-Enter,这没有效果。 / p>
任何帮助都将不胜感激。
答案 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);