【问题标题】:WPF: Convert Ctrl+Enter to Enter on a TextBoxWPF:将 Ctrl+Enter 转换为 TextBox 上的 Enter
【发布时间】:2012-05-10 15:11:52
【问题描述】:

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

现在我想颠倒这两个功能,即 Ctrl+Enter 应该创建一个新行,Enter 应该触发我的特定操作。一切正常,除了我需要用 Ctrl-Enter 创建一个新行。

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

任何帮助将不胜感激。

【问题讨论】:

  • 我刚刚找到了另一种方法,但我没有足够的声誉来回答我自己的问题,直到再过 8 个小时......
  • 呵呵^.. 我赞成你也许能帮上忙? :)

标签: wpf textbox keydown


【解决方案1】:

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

var caretIndex = MyTextBox.CaretIndex;
MyTextBox.Text = MyTextBox.Text.Insert(caretIndex, System.Environment.NewLine);
MyTextBox.CaretIndex = caretIndex + 1;

【讨论】:

  • 对于任何跟随的人,作为一般最佳实践,应使用System.Environment.NewLine 而不是\r\n\r\n
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2012-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-13
    相关资源
    最近更新 更多