前言 & 問題 如下截圖,TextBox,在觸摸點擊後,會自動彈出windows的虛擬鍵盤。 如何,禁用鍵盤的自動彈出? 調用虛擬鍵盤 通過調用TapTip.exe或者osk.exe,主動彈出虛擬鍵盤 詳細調用可參考:c#調用windows虛擬鍵盤 如何禁用鍵盤的彈出 TextBox在觸摸點擊後,會 ...
前言 & 問題
如下截圖,TextBox,在觸摸點擊後,會自動彈出windows的虛擬鍵盤。
如何,禁用鍵盤的自動彈出?
調用虛擬鍵盤
通過調用TapTip.exe或者osk.exe,主動彈出虛擬鍵盤
詳細調用可參考:c#調用windows虛擬鍵盤
如何禁用鍵盤的彈出
TextBox在觸摸點擊後,會自動彈出虛擬鍵盤,是因為在控制項中作了封裝。
--TextBox中詳細TabTip.exe封裝看了會,沒找到
處理方案:重寫TextBox的方法OnCreateAutomationPeer,返回一個UIElementAutomationPeer而不是AutomationPeer。
可能原因:TextBox自定義實現中返回的是AutomationPeer,而UIElementAutomationPeer繼承AutomationPeer,重寫了相關鍵盤屬性。
猜測與HasKeyboardFocusCore屬性有關。
直接複製如下代碼:
1 /// <summary> 2 /// 禁用自動彈出虛擬鍵盤的TextBox控制項 3 /// </summary> 4 public class TextBoxNoAutoKeyboard : TextBox 5 { 6 protected override AutomationPeer OnCreateAutomationPeer() 7 { 8 return new FrameworkElementAutomationPeer(this); 9 } 10 }
以上參考自:【stackoverflow】“Hide” text box from automatic Win10 keyboard showing