winforms文本框Ctrl-Backspace删除整个单词和空格



我在这里找到了一篇文章:

Winforms文本框 - 使用Ctrl-退格键删除整个单词

在按住 ctrl+退格键的同时删除文本框中的整个单词,但我注意到,如果您不实现 app.config 修改,如下所示:

<configuration>
  <appSettings>
    <add key="SendKeys" value="SendInput" />
  </appSettings>
</configuration>

只有当前单词将被删除,并且后间距过程将被中断。 例如,如果我输入"Tim tom",然后使用 ctrl + 退格键技巧,"tom"将被删除,中断任何退格操作并留下"Tom

"。

但是,如果您确实使用 app.config 修改,"tom"将被成功删除,退格操作将继续,但不会继续删除整个单词,就好像您只是按住退格键一样。

有谁知道是什么原因造成的或如何解决它?

应用程序正在选择向应用程序发送等效按键的不同行为。

为什么这两个协议存在的历史阐述在这里解释:

SendKeys 类已针对 .NET Framework 3.0 更新为 允许在 Windows Vista 上运行的应用程序中使用它。增强的 Windows Vista 的安全性(称为用户帐户控制或 UAC) 阻止以前的实现按预期工作。这 SendKeys 类容易受到计时问题的影响,一些开发人员对此 不得不解决。更新后的实现仍在 易受时序问题的影响,但速度稍快,可能需要 对变通办法的更改。类尝试使用 首先是以前的实现,如果失败,则使用新的 实现。因此,SendKeys 类的行为可能会有所不同 在不同的操作系统上。此外,当发送密钥类 使用新的实现,SendWait 方法不会等待 发送到另一个进程时要处理的消息。

这里提到的时间问题特别涉及角色对应用程序的持续控制,而不是一次只有一个角色。 它们包括

  • 难以同步打字率
  • 确保在应用打开对话框时右侧窗口接收输入
  • 确保正确的应用收到输入,即使用户干预关闭按钮

然而,SendKeys行为改变之间的真正原因不是程序员的友好性(没有显着提高),而是安全性。

设置 SendKeys 参数以指定所需的行为绝对是一个好主意。 您不希望应用程序仅仅因为 UAC 已打开或关闭而神秘地开始出现不同的行为。

最新更新