2014-01-06 77 views
0

剛落,一個按鈕和一個新的WPF應用程序WPF焦點設置組合框

點擊按鈕簡單地將焦點設置到組合框與comboBox1.Focus(內部的組合框)(或其他任何可能的)

問題:

1-當從代碼(使用焦點())設置焦點時,組合框從不接收焦點。爲什麼?

2-使用Tab鍵進行導航時,組合框會接收焦點並在控件周圍顯示一種焦點選擇器?有沒有辦法從代碼做同樣的事情(真正的焦點)?

感謝

+1

到目前爲止你的代碼是什麼? –

+0

沒有什麼只是comboBox1.SetFocus()與默認屬性(當然focusable) – michelqa

+0

標準組合框,但我也嘗試過Keyboard.FocusManager.SetFocusedElement,Keyboard.Focus(元素),獲取焦點到文本框裏面,路由與mousedown事件等..等.. – michelqa

回答

0

我認爲它實際上是工作 - 問題是,在非編輯ComboBox很難直觀地告訴我們,如果焦點是存在的。

如果添加IsEditable =「True」,您將看到它,當您單擊該按鈕時,光標將移動到ComboBox。

用Tab鍵看到的焦點選擇器是鍵盤焦點。嘗試以下操作:在您的應用程序上,無需編輯ComboBox,導航至按鈕並按空格鍵。您將看到矩形選擇出現在ComboBox周圍,因爲鍵盤焦點將移動到那裏。

+0

是的焦點()似乎設置了一個simili焦點組合框(如果你按箭頭鍵,你會看到一種焦點在組合框上),但仍然沒有虛線焦點。關於空格鍵和IsEditable(它不會改變什麼)同樣的事情 – michelqa

+0

我實際上通過在VS 2013中創建一個新的WPF項目來嘗試你的repro,並設置焦點 - 調用CobmoBox.Focus()或Keyboard.Focus(ComboBox)組合框接受鍵盤輸入(方向鍵將開始滾動項目)。雖然沒有可視化指示,除非IsEditable被設置爲true。你是否專門尋找視覺指標?在你的repro中,實際設定的重點是? – FarmerBob

+0

是的我正在尋找一種方法來設置視覺指示器(虛線矩形)。通過焦點(),焦點實際上正在設置,但沒有「指示符」。(順便說一句,我的控制是在一個數據網格內,我只是想要有一個統一的外觀,取決於如果使用Tab鍵或鼠標控制) – michelqa

0

焦點風格,當我們使用Tab鍵..thats爲什麼組合框只採取重點不着眼於按鈕樣式click..but你可以像打開下拉菜單顯示焦點(虛線)僅出現低於

 private void Button_Click_1(object sender, RoutedEventArgs e) 
    {        
     Cmb.Focus(); 
     Cmb.IsDropDownOpen = true;         
    } 

對不起,如果我錯了你的方法。

+0

我不想打開下拉菜單來設置焦點。焦點樣式(虛線)只出現在我們使用Tab鍵....真的嗎?謝謝 – michelqa

0

閱讀關於comobox編輯區中負責選擇的組合框的選擇框屬性。嘗試設置IsSelected以及Focus屬性。

與Winforms相比,焦點處理有很多新的東西,只是選擇和關注。檢查API:

http://msdn.microsoft.com/en-us/library/system.windows.controls.combobox%28v=vs.110%29.aspx

+0

selectionBoxItem只是一個簡單的字符串。無法找到API中的任何東西來設置焦點,例如使用Tab切換到組合框(虛線聚焦) – michelqa

+0

沒有獲得懸停線的原因在於,當我們單擊按鈕時,焦點是「即將到達按鈕」並且然後在按鈕焦點之前,在按鈕單擊中我們將焦點移動到另一個控件,所以線條不會被繪製。我試圖在MouseEnter按鈕和woahh中執行comboxbox焦點......它按預期工作。我正在尋找更多我們需要的東西,並會回覆你。希望你明白瞭解釋 – sunnytyra

+0

沒有它的不工作...它與點擊事件沒有關係。 (點擊按鈕只是啓動代碼的一個例子...您在其他任何地方都會遇到相同的問題(ex loaded)) – michelqa

0

如果你已經重新設計組合框,小心 「OverridesDefaultStyle」。將其設置爲true可以隱藏虛線焦點矩形。