0

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

Winforms 文本框 - 使用 Ctrl-Backspace 删除整个单词

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

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

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

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

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

4

1 回答 1

0

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

这里解释了为什么存在这两种协议的历史解释:

SendKeys 类已针对 .NET Framework 3.0 进行了更新,以使其能够在 Windows Vista 上运行的应用程序中使用。Windows Vista 的增强安全性(称为用户帐户控制或 UAC)会阻止以前的实现按预期工作。SendKeys 类容易受到时间问题的影响,一些开发人员不得不解决这些问题。更新后的实现仍然容易受到时序问题的影响,但速度稍快一些,并且可能需要更改变通方法。SendKeys 类首先尝试使用以前的实现,如果失败,则使用新的实现。因此,SendKeys 类在不同操作系统上的行为可能不同。此外,当 SendKeys 类使用新的实现时,

这里提到的时间问题尤其关注字符对应用程序的持续控制,而不仅仅是一次一个字符。它们包括

  • 打字速度同步困难
  • 确保在应用程序打开对话框时正确的窗口接收输入
  • 即使用户干预关闭按钮,也要确保正确的应用程序接收到输入

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

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

于 2012-07-03T06:23:45.330 回答