在开发.NET windows窗体应用程序时,我陷入了一点僵局。问题在于如何在控件之间切换焦点,以及如何维护窗体的控件状态。
UI中有三个主要控件--两个组合框和一个按钮。
从SelectedItem = null
.
AutoCompleteMode.SuggestAppend
,AutoCompleteSource
设置为AutoCompleteSource.ListItems
。这意味着用户可以键入组合框并有建议弹出,因为除非在select.
问题在于键盘导航和控制焦点,以及它们如何与维护各种控件的Enabled
状态相关联的逻辑一起工作。
简而言之,当为组合框选择一个值时,在运行启用/禁用控件的逻辑之前,按TAB (以使您选择组合框)将焦点放在窗体上的下一个控件上(按照TabIndex顺序)。
启用/禁用控件的逻辑发生在关联组合框的验证/验证事件中。
最终的结果是,在给定焦点之后,可以禁用控件。
例如:
当我按下TAB时,在更改SelectedItem之前,似乎会将焦点放在下一个控件上。在更改SelectedItem之前,无法运行启用或禁用其他UI控件的业务逻辑。
理想情况下,我想要的是相反的方法:焦点应该在UI控件的SelectedItem更新之后转移,因此更新控件状态的逻辑已经运行。
有人对我怎么做有什么建议吗?
发布于 2009-12-20 21:19:23
您能否显式地更改SelectedIndexChanged
/ SelectedValueChanged
中适当组合框的焦点?您可能需要检查焦点当前的位置,并且只有当焦点位于禁用的控件上时才进行移位。
https://stackoverflow.com/questions/1938303
复制