c# – 在文本框中处理Shift-Enter事件

我想要一个文本框,用户可以在其中切换 – 输入或按住ctrl-enter添加换行符而不提交.我发现以下关于如何进行ctrl-enter的帖子

http://social.msdn.microsoft.com/forums/en-US/wpf/thread/67ef5912-aaf7-43cc-bfb0-88acdc37f09c

效果很好!所以我添加了自己的块以捕获shift输入,如下所示:

else if (((keyData & swf.Keys.Shift) == swf.Keys.Shift) && ((keyData & swf.Keys.Enter) == swf.Keys.Enter) && Keyboard.FocusedElement == txtMessage)
  {
     // SHIFT ENTER pressed!
  }

除了现在该框正在捕获其他移位组合,例如问号和波浪形大括号,然后添加换行符.我需要更改什么来防止这种情况发生?

解决方法

我不会和WinForms混在一起.尝试:

<TextBox KeyDown="TextBox_KeyDown" />

使用此事件处理程序:

private void TextBox_KeyDown(object sender,KeyEventArgs e)
{
    if (e.Key == Key.Enter)
    {
        if (Keyboard.Modifiers.HasFlag(ModifierKeys.Control))
        {
            MessageBox.Show("Control + Enter pressed");
        }
        else if (Keyboard.Modifiers.HasFlag(ModifierKeys.Shift))
        {
            MessageBox.Show("Shift + Enter pressed");
        }
    }
}

相关文章

目录简介使用JS互操作使用ClipLazor库创建项目使用方法简单测...
目录简介快速入门安装 NuGet 包实体类User数据库类DbFactory...
本文实现一个简单的配置类,原理比较简单,适用于一些小型项...
C#中Description特性主要用于枚举和属性,方法比较简单,记录...
[TOC] # 原理简介 本文参考[C#/WPF/WinForm/程序实现软件开机...
目录简介获取 HTML 文档解析 HTML 文档测试补充:使用 CSS 选...