1

我在 Windows.Forms 中制作了一个带有许多按钮的键盘,它们的内容是 Alphabet 的不同字符,就像真正的键盘一样。

现在的问题是当我在 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 之外,还有什么我可以尝试的吗?

4

2 回答 2

2

您在第一个字母后失去焦点......在调用 SendWait 之前将焦点重置到目标。

于 2012-02-28T18:51:16.193 回答
-1

sendkeys 函数确实不是最好的函数。使用 winApi 和更具体的 PostMessage 会更好。

这是一个例子:PostMessage WM_KEYDOWN 发送多个键?

您将更直接地使用消息队列,但这也意味着您将不得不处理额外的事情,例如布局/本地化。

于 2012-02-28T19:30:53.523 回答