我已經創建了一個實現了下面的代碼數字鍵盤自定義表單:虛擬鍵盤失去焦點
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
我的猜測是您將第一個鍵發送到具有焦點的單元格,但在此之後,你以某種方式關注焦點。也許你應該檢查重點在哪裏,誰收到下一個輸入... –