C# UI问题-控制控件状态和焦点
在开发.NET windows窗体应用程序时,我遇到了一些僵局。问题在于在控件之间切换焦点,以及如何维护窗体控件的状态 UI中有三个主要控件–两个组合框和一个按钮 两个组合框都以SelectedItem=null开头。 两个组合框都有一组可选择的显式有效选项。 两个组合框都使用AutoCompleteMode.SuggestAppend,并将AutoCompleteSource设置为AutoCompleteSource.ListItems。这意味着用户可以在组合框中键入,并弹出建议以选择值。 组合框1始终处于启用状态。 除非在组合框1中选择了特定值,否则组合框2将被禁用。 该按钮仅在以下情况下启用: 已从“始终启用”组合框中选择有效值。 如果在第一个组合框中选择了特定值,则已从第二个组合框中选择了有效值。否则,将忽略其值。 在所有其他情况下,它是禁用的。 问题在于键盘导航和控件焦点,以及它们如何与维护各种控件的启用状态相关的逻辑一起发挥作用 简言之,在为组合框选择值时,在运行启用/禁用控件的逻辑之前,按TAB键选择组合框会根据TabIndex顺序将焦点集中到窗体上的下一个控件 启用/禁用控件的逻辑发生在关联组合框的验证/验证事件中 最终的结果是,控件在获得焦点后可以被禁用 例如: 仅启用组合框1。组合框2和按钮被禁用。所有组合框的SelectedItem都设置为空。 将焦点设置为组合框1。 键入框中有效选项的前几个字母。 按TAB键。 当我按TAB键时,在SelectedItem被更改之前,焦点似乎被赋予了下一个控件。在更改SelectedItem之前,无法运行用于启用或禁用其他UI控件的业务逻辑 理想情况下,我想要的是另一种方式:在UI控件的SelectedItem更新之后,焦点应该转移,因此更新控件状态的逻辑已经运行C# UI问题-控制控件状态和焦点,c#,.net-2.0,controls,focus,state,C#,.net 2.0,Controls,Focus,State,在开发.NET windows窗体应用程序时,我遇到了一些僵局。问题在于在控件之间切换焦点,以及如何维护窗体控件的状态 UI中有三个主要控件–两个组合框和一个按钮 两个组合框都以SelectedItem=null开头。 两个组合框都有一组可选择的显式有效选项。 两个组合框都使用AutoCompleteMode.SuggestAppend,并将AutoCompleteSource设置为AutoCompleteSource.ListItems。这意味着用户可以在组合框中键入,并弹出建议以选择值。 组
有人对我如何进行这项工作有什么建议吗?您能否明确地在SelectedIndexChanged/SelectedValueChanged中更改相应组合框的焦点?您可能需要检查焦点当前所在的位置,并且仅当焦点位于禁用的控件上时才进行切换。听起来这几乎就是我需要的解决方案。只有一件事困扰着我,那就是当我用力聚焦一个控件时,要尊重控件索引。我在这里要做的似乎是告诉.NET我知道的更多,这个控制需要重点关注。现在的问题是,如果使用键盘导航,如何区分按TAB键和SHIFT+TAB键的用户?我只想在用户界面导航到禁用控件的方向时移动焦点。