2012-02-24 53 views
0

使用WPF和C#的Im。 我有一個使用按鈕製作的OnScreenKeyboard的應用程序。 當我按下在OnScreenKeyboard標籤按鈕它這樣做:WPF和C#組合框下一個焦點

if (IsEnterEnabled){ 
    CurrentTextBox.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next)); 
} 

CurrentTextBox是一個控制。

當文本框聚焦時,它可以正常工作並移動到下一個焦點,即使下一個焦點是組合框,但是如果當前焦點位於可編輯組合框中,它也不會移動到下一個焦點元素。

如果組合框不可編輯,它將起作用。

+0

您是否檢查過該控件是否有焦點?並且可以選擇/可以選項卡? – tcables 2012-02-24 17:44:46

+0

是的,如果我在我真正的鍵盤上按Tab鍵它工作正常。 – davibq 2012-02-24 17:53:26

回答

0

由於ComboBox裏面有一個TextBox,它當前有焦點,告訴ComboBox接下來移動只會移動到TextBox。取而代之的是,得到了內部文本框,並在旁邊移動:

 var s1 = FocusManager.GetFocusedElement(this); 
     if (s1 is FrameworkElement) 
     { 
      ((FrameworkElement)s1).MoveFocus(new TraversalRequest(FocusNavigationDirection.Next)); 
     } 
0

如果你喜歡,你可以用我EnterKeyTraversal attached property代碼。將它添加到WPF窗口的頂級容器上,裏面的所有內容都會將輸入視爲製表符:

<ComboBox my:EnterKeyTraversal.IsEnabled="True"> 
... 
</ComboBox>