C# MessageBox 导致按键处理程序忽略 SuppressKeyPress

2023-12-04

考虑具有以下组件的 Windows 窗体应用程序

partial class Form1
{
    private System.Windows.Forms.TextBox textBox = new System.Windows.Forms.TextBox();
    private void InitializeComponent()
    {
        textBox.Multiline = true;

        Controls.Add(this.textBox);
        KeyPreview = true;
        KeyDown += new System.Windows.Forms.KeyEventHandler(Form1_KeyDown);
    }

    private void Form1_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.Enter)
        {
            e.SuppressKeyPress = true;
            if (textBox.Text.Length > 10)
                MessageBox.Show("Test");
        }
    }
}

现在,预期的行为是将文本写入textBox并按回车键。如果文本是

  • 时间不够长,什么都不会发生(由于e.SuppressKeyPress = true;)并且这种情况发生了。
  • 足够长,空MessageBox应该弹出并且Keys.Enter不应达到textBox成分。但是,当弹出MessageBox时,文本中会包含回车导致的换行符。

这是故意的行为,还是错误,还是我是唯一经历过这种情况的人?


您可以通过调用消息框来解决问题BeginInvoke这边走:

private void Form1_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Enter)
    {
        e.SuppressKeyPress = true;
        this.BeginInvoke(new Action(() => {
            if (textBox.Text.Length > 10)
                MessageBox.Show("Test");
        }));
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# MessageBox 导致按键处理程序忽略 SuppressKeyPress 的相关文章

  • 如何在没有 Control.Invoke() 的情况下从后台线程修改控件属性

    最近 我们遇到了一些旧版 WinForms 应用程序 我们需要更新一些新功能 在专家测试该应用程序时 发现一些旧功能被破坏 无效的跨线程操作 现在 在您认为我是新手之前 我确实有一些 Windows 窗体应用程序的经验 我不是专家 但我认为
  • 为什么禁止在 constexpr 函数中使用 goto?

    C 14 对你能做什么和不能做什么有规则constexpr功能 其中一些 没有asm 没有静态变量 看起来相当合理 但标准也不允许goto in constexpr功能 即使它允许其他控制流机制 这种区别背后的原因是什么 我以为我们已经过去
  • 将字符串从非托管代码传递到托管

    我在将字符串从非托管代码传递到托管代码时遇到问题 在我的非托管类中 非托管类 cpp 我有一个来自托管代码的函数指针 TESTCALLBACK FUNCTION testCbFunc TESTCALLBACK FUNCTION 接受一个字符
  • 使用 C# 在 WinRT 中获取可用磁盘空间

    DllImport kernel32 dll SetLastError true static extern bool GetDiskFreeSpaceEx string lpDirectoryName out ulong lpFreeBy
  • 使用 Google Analytics API 在 C# 中显示信息

    我一整天都在寻找一个好的解决方案 但谷歌发展得太快了 我找不到有效的解决方案 我想做的是 我有一个 Web 应用程序 它有一个管理部分 用户需要登录才能查看信息 在本节中 我想显示来自 GA 的一些数据 例如某些特定网址的综合浏览量 因为我
  • c 中的错误:声明隐藏了全局范围内的变量

    当我尝试编译以下代码时 我收到此错误消息 错误 声明隐藏了全局范围内的变量 无效迭代器 节点 根 我不明白我到底在哪里隐藏或隐藏了之前声明的全局变量 我怎样才能解决这个问题 typedef node typedef struct node
  • Windows 窗体不会在调试模式下显示

    我最近升级到 VS 2012 我有一组在 VS 2010 中编码的 UI 测试 我试图在 VS 2012 中启动它们 我有一个 Windows 窗体 在开始时显示使用 AssemblyInitialize 属性运行测试 我使用此表单允许用户
  • 编译的表达式树会泄漏吗?

    根据我的理解 JIT 代码在程序运行时永远不会从内存中释放 这是否意味着重复调用 Compile 表达式树上会泄漏内存吗 这意味着仅在静态构造函数中编译表达式树或以其他方式缓存它们 这可能不那么简单 正确的 他们可能是GCed Lambda
  • 我的 strlcpy 版本

    海湾合作委员会 4 4 4 c89 我的程序做了很多字符串处理 我不想使用 strncpy 因为它不会终止 我不能使用 strlcpy 因为它不可移植 只是几个问题 我怎样才能让我的函数正常运行 以确保它完全安全稳定 单元测试 这对于生产来
  • Windows 10 中 Qt 桌面应用程序的缩放不当

    我正在为 Windows 10 编写一个简单的 Qt Widgets Gui 应用程序 我使用的是 Qt 5 6 0 beta 版本 我遇到的问题是它根本无法缩放到我的 Surfacebook 的屏幕上 这有点难以判断 因为 SO 缩放了图
  • 像“1$”这样的位置参数如何与 printf() 一起使用?

    By man I find printf d width num and printf 2 1 d width num 是等价的 但在我看来 第二种风格应该与以下相同 printf d num width 然而通过测试似乎man是对的 为什
  • .NET 选项将视频文件流式传输为网络摄像头图像

    我有兴趣开发一个应用程序 它允许我从 xml 构建视频列表 包含视频标题 持续时间等 并将该列表作为我的网络摄像头流播放 这意味着 如果我要访问 ustream tv 或在实时通讯软件上激活我的网络摄像头 我的视频播放列表将注册为我的活动网
  • C 中的位移位

    如果与有符号整数对应的位模式右移 则 1 vacant bit will be filled by the sign bit 2 vacant bit will be filled by 0 3 The outcome is impleme
  • 将 System.Windows.Forms.Keys 序列转换为 Char

    有没有办法转换由 Keys 枚举表示的击键序列 即System Windows Forms Keys 在一个字符中 例如 Keys Oem4进而Keys A产生 char 它一定存在于 WinAPI 中的某个地方 因为当我在文本框中按下按键
  • 将应用程序从 Microsoft Access 迁移到 VB 或 C#.NET

    我目前正试图说服管理层需要将我们的应用程序之一移植到 NET 该应用程序已经发展成为 Access 中的一个庞然大物 SQL 后端 拥有 700 个链接表 650 个表单 子表单 130 个模块和 850 个查询 我几乎知道这样做的所有主要
  • 将日期参数传递给对 MVC 操作的 ajax 调用的安全方法

    我有一个 MVC 操作 它的参数之一是DateTime如果我通过 17 07 2012 它会抛出一个异常 指出参数为空但不能有空值 但如果我通过01 07 2012它被解析为Jan 07 2012 我将日期传递给 ajax 调用DD MM
  • 已过时 - OpenCV 的错误模式

    我正在使用 OpenCV 1 进行一些图像处理 并且对 cvSetErrMode 函数 它是 CxCore 的一部分 感到困惑 OpenCV 具有三种错误模式 叶 调用错误处理程序后 程序终止 Parent 程序没有终止 但错误处理程序被调
  • 如何在内存中存储分子?

    我想将分子存储在内存中 这些可以是简单的分子 Methane CH4 C H bond length 108 7 pm H H angle 109 degrees But also more complex molecules like p
  • GDK3/GTK3窗口更新的精确定时

    我有一个使用 GTK 用 C 语言编写的应用程序 尽管该语言对于这个问题可能并不重要 这个应用程序有全屏gtk window与单个gtk drawing area 对于绘图区域 我已经通过注册了一个刻度回调gtk widget add ti
  • C++ 成员函数中的“if (!this)”有多糟糕?

    如果我遇到旧代码if this return 在应用程序中 这种风险有多严重 它是一个危险的定时炸弹 需要立即在应用程序范围内进行搜索和销毁工作 还是更像是一种可以悄悄留在原处的代码气味 我不打算writing当然 执行此操作的代码 相反

随机推荐

  • 使用 boost::concept_check 检查模板参数时出现编译错误

    我正在尝试编译一个使用小桥模板 externally locked 的简单示例 该模板仅在锁定其父 AccountManager 对象后才能控制对 BankAccount 的访问 参考增强同步 include
  • Unity3d 在 Android 上共享图像

    尝试在 Unity 游戏上实现 Android 图像共享 我整理了几个源代码 这是我当前的代码 public static void shareImage string subject string title string message
  • 对枚举值进行排序

    我想知道是否有任何方法可以为不同的类订购枚举 例如 如果我有一组固定的化学物质 它们以不同的方式与其他化学物质发生反应 有些反应强烈 有些反应较弱 我基本上希望能够根据该组应该反应的化学物质 即取决于类别 来改变它们的排列顺序 我确实知道我
  • Javascript:用逗号分割字符串,括号内除外

    给定字符串的形式 abc ab c d e f g zyx h 123 如何拆分它以获得以下数组格式 abc ab c d e f g zyx h 123 我已经尝试过正常的 javascript split 但是它无法按预期工作 尝试正则
  • 浮点数比较不匹配

    我有一个非常奇怪的错误 我无法弄清楚 float distance Utils distance this spriteStartX this spriteStartY this getX this getY Utils log D Che
  • Java,按对象获取ArrayList索引

    所以我在我的代码中遇到了一个小问题 synchronized clients clients remove this 当客户端断开连接时 但现在我需要能够将该客户端的名称发送给所有其他客户端 为此 我本质上需要执行类似的操作 synchro
  • 确保方法声明是继承的

    如何防止在打算继承定义的情况下意外定义非继承方法 我听说有一个技巧可以表达它 但没有人能记住它 解释 我有类树 Base 在派生链的某个地方 agrglist 中存在微妙的错误 导致 D 不可继承 程序顺利编译 并且在运行时调用了错误的方法
  • 如何检查VB.NET代码中Access SysCmd失败的原因?

    我们有一个用 VB NET 以及客户端中的 VBA 开发的应用程序 在 VB NET 开发的安装程序自定义操作中 我们使用 Access 的 SysCmd 603 将 mdb 文件编译为 mde 该命令众所周知未记录 示例代码如下所示 a
  • Android 上 OpenCV 中位图和 Mat 之间转换的正确方法?

    我目前正在尝试将一些遗留代码从 iPhone 迁移到 Android 此代码使用 OpenCV 库进行一些图像处理 我不明白如何在 Mat 和 Android Bitmap 类之间进行转换 此代码显示了一个非常简化的示例 它将位图加载到 M
  • 使用总和而不是计数绘制分箱数据

    我试图寻找答案 但似乎找不到适合我的答案 我有一个数据集 data 有两个变量 人们的年龄 age 和奖项数量 awards 我的目标是绘制 R 中奖项数量与年龄的关系 仅供参考 一个人可以获得多个奖项 并且人们可以拥有相同的年龄 我尝试绘
  • __LITTLE_ENDIAN_BITFIELD 和 __BIG_ENDIAN_BITFIELD? [复制]

    这个问题在这里已经有答案了 我想知道内核编译器将如何处理不同的字节序位域 struct iphdr if defined LITTLE ENDIAN BITFIELD u8 ihl 4 version 4 elif defined BIG
  • 将 SetFields 与 MongoDB C# 驱动程序 2.0 结合使用

    使用旧驱动程序 我可以指定要从查询返回的字段 如下所示 var cursor Collection Find query SetFields Fields
  • 将索引添加到 Google App Engine 上数据存储区中已存在的实体属性

    我知道您应该将 Index 添加到实体模型中的所有属性以添加索引 但是如果您忘记并且数据存储中已经存在实体的实时写入怎么办 有没有办法通过开发人员控制台或其他方式手动向所有这些属性添加索引 我发现 如果您将 Index 添加到实体并重新部署
  • 如何在 Jaxb 中忽略 XML 中的某些标签

    我的xml文件如下
  • 使用 java 和 iText 签署 PDF 哈希值

    我有一个生成 PDF 的应用程序 需要签名 我们没有用于签署文档的证书 因为它们位于 HSM 中 而我们使用证书的唯一方法是使用 Web 服务 PdfReader reader new PdfReader src reader setApp
  • 无法让 pysnmp 与 pyinstaller 一起使用

    尝试让 pyinstaller 与 pysnmp 一起使用这是规范文件 mode python a Analysis app py pathex home robertja pysnmp hiddenimports None hookspa
  • 在 scipy 中重现 sox 频谱图

    例如 我有一个带有语音的 wav 文件 我可以使用 sox 创建漂亮的频谱图可视化 wget https google github io tacotron publications tacotron2 demos romance gt w
  • BitBlt - 使用另一个应用程序的 HDC 时捕获的像素全为零 (bgra)

    由于 Nick Nougat 的答案中的代码 我可以使用 BitBlt 和 GetDIBits 成功捕获部分屏幕here 捕获整个屏幕或桌面似乎可行 但是当我提供应用程序的 HDC 时 它会打印奇怪的数据 以 bgra 格式 HWND de
  • IE8 中的无表表格布局

    有没有办法复制exactly这个布局没有表格 仅使用CSS和div 没有Javascript IE8 http jsfiddle net u0u7snh6 2 我尝试过多种场景IE8似乎很混乱 Height of the content c
  • C# MessageBox 导致按键处理程序忽略 SuppressKeyPress

    考虑具有以下组件的 Windows 窗体应用程序 partial class Form1 private System Windows Forms TextBox textBox new System Windows Forms TextB