2017-10-06 129 views
-4

我正在構建一個虛擬鍵盤以適應我將要部署的觸摸屏機器的需求。我使用的是彈出窗口鍵盤和已經能夠連接所有數字按鈕如下,這裏是我的虛擬鍵盤類當窗口彈出時如何保持文本框的焦點

public partial class NumKeypad : Window 
{ 
    withoutB withoutbvn; 
    enterBvn ebvnn; 
    public NumKeypad() 
    { 
     InitializeComponent(); 
    } 

    public NumKeypad(withoutB wobvn) 
    { 
     InitializeComponent(); 
     withoutbvn = wobvn;    
    } 

    private void one_Click(object sender, RoutedEventArgs e) 
    { 
     var focusedElt = FocusManager.GetFocusedElement(withoutbvn); 
     var tbox = focusedElt as TextBox; 
     try 
     { 
      withoutbvn.ph.Text += (((sender as Button).Content as Border).Child as TextBlock).Text;//this works, but this is assigning directly to only one control. i want to assign to whatever control that has focus 
     } 
     catch (Exception ex) 
     { 

     } 
    } 
} 

在one_click函數的第一行(負責處理所有輸入按鈕點擊)我試圖獲取當前關注於實例爲「withoutbvn」的頁面中的元素的引用。 在第二行,我嘗試將元素轉換爲文本框,以便我可以寫入其文本屬性。但是一直返回null。這意味着當這個彈出窗口出現時(當文本框或任何其他輸入元素獲得焦點時彈出鍵盤彈出窗口),我無法獲得對焦點文本框的引用,所以我不能寫入它。請如何確保集中​​的文本框保持專注,以便我可以從彈出窗口分配其文本屬性?或者如果有更好的方法來做到這一點,請指出我的方向是正確的。由於

+0

難道你不能自己創建它嗎? –

+0

看到這個:https://www.codeproject.com/Articles/145579/A-Software-Virtual-Keyboard-for-Your-WPF-Apps – tabby

+0

@MarcoSalerno我現在要做的,但我有一個問題。當在鍵盤上點擊一個按鈕(這是一個彈出窗口)時,如何在父窗口中設置文本框的文本以及按鈕傳遞的值 –

回答

0

我用這個鍵盤WPF:

keyboard control wpf

它是可以根據需要來定製一個彈出控制。你有完整的代碼,它是免費的。在我的情況下,我不得不調整彈出(佈局和添加德文字母),並且非常簡單。

我還必須顯示一個數字鍵盤,並且我使用了相同的鍵盤,但佈局更簡單。在幕後,所有這一切都非常簡單:您必須在網格中定義一個關鍵點,將其放置在您想要的位置,並確保您點擊相應的虛擬關鍵點代碼。

0

我使用彈出控件創建鍵盤,使用按鈕創建所有按鍵,並將單個事件處理程序連接到所有輸入按鈕,然後爲退格鍵和輸入按鈕指定不同的事件處理程序。一旦單擊任何字母,數字或符號按鈕,就會調用以下函數。

try 
     { 
      IInputElement focusedControl = Keyboard.FocusedElement; 
      var foc = focusedControl as TextBox; 
      foc.Text += (((sender as Button).Content as Border).Child as TextBlock).Text; 
     } 
     catch (Exception) 
     { 

     } 

將按鈕的文本插入到焦點控件中。這是非常基本的。我會欣賞更多關於如何在這方面進行擴展的建議。謝謝

相關問題