【问题标题】:How to prevent Texter/PhraseExpress from causing misfired KeyUp events in VB.NET?如何防止 Text/PhraseExpress 在 VB.NET 中导致误触发 KeyUp 事件?
【发布时间】:2013-02-25 14:06:43
【问题描述】:

我有一个 VB.NET 应用程序。当安装并启用 TexterPhraseExpress 时,程序的行为会很差。调试显示有时我可以在字段中按 Enter 并且不会触发任何事件(即事件处理程序中没有断点被命中),然后我再次按下它,它们将被触发两次。 (基本上这些循环,如果我一直按回车 - 一次什么都不会发生,下一次我得到两个事件,下一次按键什么都不做,下一次触发两个事件,等等)

由于在某些地方使用 Enter 来触发搜索,或在字段之间移动以使用数字键盘快速输入数据,这实际上会破坏这些地方的程序。

问题是高度可重复的 - 禁用 Texter 或 PhraseExpress 会导致程序正常运行。再次启用它们会导致它中断。

请注意,在两个文本扩展程序中,我都为 Enter 键分配了 NO 事件。事实上,使用 Texter(尚未使用 PE 进行此特定测试),即使根本没有定义任何替换,它也会发生,仅基于 Texter 是启用还是禁用。

【问题讨论】:

    标签: vb.net event-handling keyboard


    【解决方案1】:

    如果在 PhraseExpress 中遇到问题,请禁用专家选项“通过 PhraseExpress 路由 TAB 和 ENTER”。

    截图:

    另请注意,同时使用多重文本扩展器可能会像您遇到的那样引入干扰。不幸的是,我们的供应商无法绕过这个限制。

    迈克尔·施密特
    PhraseExpress 团队

    【讨论】:

    • 谢谢!我没有安装多个文本扩展器,我先尝试了 Tester,然后我们在另一台机器上尝试了 Phrase Express。
    【解决方案2】:

    尝试通过重写 ProcessDialogKey 来监听事件 http://msdn.microsoft.com/en-us/library/system.windows.forms.control.processdialogkey.aspx 而不是直接附加到控件的事件。

    【讨论】:

      猜你喜欢
      • 2018-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-26
      • 2017-01-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多