WPF 禁用TextBox的觸摸後自動彈出虛擬鍵盤
阿新 • • 發佈:2018-12-22
重寫 前言 () nbsp RKE inf tap text ive 原文:WPF 禁用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 protectedoverride AutomationPeer OnCreateAutomationPeer() 7 { 8 return new FrameworkElementAutomationPeer(this); 9 } 10 }
以上參考自:【stackoverflow】“Hide” text box from automatic Win10 keyboard showing
WPF 禁用TextBox的觸摸後自動彈出虛擬鍵盤