1. 程式人生 > >WPF 禁用TextBox的觸摸後自動彈出虛擬鍵盤

WPF 禁用TextBox的觸摸後自動彈出虛擬鍵盤

重寫 前言 () 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         protected
override AutomationPeer OnCreateAutomationPeer() 7 { 8 return new FrameworkElementAutomationPeer(this); 9 } 10 }

以上參考自:【stackoverflow】“Hide” text box from automatic Win10 keyboard showing

WPF 禁用TextBox的觸摸後自動彈出虛擬鍵盤