2012-07-03 35 views
0

我发现这里的文章:的WinForms文本框按Ctrl-Backspace键删除所有Word和空间

Winforms Textbox - Using Ctrl-Backspace to Delete Whole Word

删除整个字的文本框,同时按住Ctrl + Backspace键,但我注意到,如果你不“T实现在app.config修改像这样:

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

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

如果你使用app.config修改,但是,“tom”将被成功移除并且退格操作将继续,但不会继续移除整个单词,就好像您刚刚拿着退格键一样。

有谁知道是什么原因造成的,或者如何修复它?

回答

0

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

的历史阐述为什么这两个协议的存在,说明here

SendKeys类已经在Windows Vista上运行的应用程序被更新为.NET Framework 3.0 启用它的使用。 Windows Vista的安全性(称为用户帐户控制或UAC) 可防止以前的实现按预期工作。 SendKeys类易受定时问题影响,一些开发人员不得不解决此问题。更新的实施仍然是 易受时序问题影响,但速度稍快,可能需要 变通办法。 SendKeys类尝试首先使用 先前的实现,如果失败,则使用新的 实现。因此,SendKeys类可能在不同的操作系统上的行为不同 。此外,SendKeys类 使用新的实现时,SendWait方法将不会等待 邮件发送到另一个进程时处理。

这里提到的时间问题主要涉及字符的应用控制,而不仅仅是一次一个字符。它们包括同步打字速度

  • 确保右侧窗口接收输入时,应用程序在打开的对话框
  • 确保合适的应用程序接收,即使用户接近插手输入

    • 困难按钮

    然而,SendKeys行为变化之间的真正原因是不是程序员友好(这并没有显著改善),但security

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