2014-01-06 74 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可以隐藏虚线焦点矩形。