我在Windows.Forms中制作了一个带有许多按钮的键盘,它们的内容就像字母一样,是真正的键盘。
现在的问题是,当我在Windows 7中使用键盘时,一切都运行良好。但是当我在Windows XP的触摸屏上使用键盘时,键盘会多次写入我刚按下的按钮的内容,或者不会在文本框内写入任何内容。
以下是一些示例代码:
Button temp = sender as Button;
SendKeys.SendWait(temp.Text);
我尝试过SendKeys.Flush和
<appSettings>
<add key="SendKeys" value="SendInput"/>
</appSettings>
在app.config
中这是msdn的解决方案。但它没有解决问题。
我做错了什么?
编辑:现在我发现第一封信总是完美无缺。之后一切都变得糟透了。除了SendKeys.Flush之外还有什么可以尝试的吗?
答案 0 :(得分:2)
在第一个字母后你失去焦点...在调用SendWait之前将焦点重置为目标。
答案 1 :(得分:-1)
sendkeys函数确实不是最好的函数。 使用winApi,更具体地说PostMessage将证明更好。
以下是一个示例:PostMessage WM_KEYDOWN send multiply keys?
您将更直接地使用消息Queue,但这也意味着您将不得不处理额外的事情,例如布局/本地化。