我已经创建了一个实现了下面的代码数字键盘自定义表单:虚拟键盘失去焦点
private void btn1_Click(object sender, EventArgs e)
{
PressKey(Keys.D1);
}
[DllImport("user32.dll", SetLastError = true)]
static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, UIntPtr dwExtraInfo);
public static void PressKey(Keys key)
{
const int KEYEVENTF_EXTENDEDKEY = 0x1;
keybd_event((byte)key, 0x45, KEYEVENTF_EXTENDEDKEY, (UIntPtr)0);
}
我也用以下块
protected override bool ShowWithoutActivation
{
get { return true; }
}
它可以作为魅力对于记事本,单词或其他编辑器(以及使用基本的SendKeys方法),但在我的应用程序中,在我打算使用它(或其他可编辑控件)的网格单元格中,它无法插入值。 意外地我发现它只能插入一次值,当单元格不处于编辑模式时,但它具有焦点。
从一种形式到另一个虚拟键盘的任何履行例如将高度赞赏
开始 - >运行 - > osk.exe。问题解决了,没有必要的代码。 –
感谢科迪,但这不是一个解决方案。该应用程序将运行在Windows 7嵌入式的POS设备上,键盘没有数字变体作为数字键,客户要求 – AlexSen
我的猜测是您将第一个键发送到具有焦点的单元格,但在此之后,你以某种方式关注焦点。也许你应该检查重点在哪里,谁收到下一个输入... –