C# 选项卡控件-等待控件启用

C# 选项卡控件-等待控件启用,c#,tabs,C#,Tabs,我在一个窗体上有多个控件,当我从组合框(例如1)中选择某个值时,下一个控件变为启用,否则下一个控件保持禁用状态 问题是,若我只按1键和tab键,那个么在下一个控件启用之后,程序就会跳过它,就像控件仍然被禁用一样,tab控件选择下一个控件 我需要找到如何制表符检查控件是否启用并继续此控件,如果控件仍然禁用,则继续下一个启用的控件 Thanx这可能是由您用来控制流量的组合框事件引起的 大多数语言中的“更改”/“值更改”事件在控件失去焦点后会触发。您忘记为正在使用的UI技术添加标记 如果您使用的是Wi

我在一个窗体上有多个控件,当我从组合框(例如1)中选择某个值时,下一个控件变为启用,否则下一个控件保持禁用状态

问题是,若我只按1键和tab键,那个么在下一个控件启用之后,程序就会跳过它,就像控件仍然被禁用一样,tab控件选择下一个控件

我需要找到如何制表符检查控件是否启用并继续此控件,如果控件仍然禁用,则继续下一个启用的控件


Thanx

这可能是由您用来控制流量的组合框事件引起的


大多数语言中的“更改”/“值更改”事件在控件失去焦点后会触发。

您忘记为正在使用的UI技术添加标记


如果您使用的是WinForms,则可以尝试在控件上执行用户刚刚编辑的方法。这将为您找到“下一个”控件,并将其激活。

您为用户创建了一个捕鼠器,很难逃脱。从技术上讲,您可以在使用Tab键进行导航之前通过捕获Tab键来处理键盘导航,但是当用户想要使用鼠标改变焦点时,仍然存在无法解决的问题。他没有什么像样的东西可以点击

你需要重新思考你的UI设计。一个可能的解决方案是将ComboBox的DropDownStyle更改为DropDownList。如果您使用它的选定项来启用其他控件,这应该是非常合适的,应该只有一组有限的有效选择。如果这不是你想要的,那么你需要做一些激烈的事情。不一定局限于隐藏控件而不是禁用它们。

让我们假设它是winforms(在wpf中这样使用禁用/启用控件是..违反mvvm规则)

首先,确保控件的选项卡顺序/索引是正确的。要进行测试,如果它们都已启用,则按Tab键应按正确的顺序遍历它们。这是显而易见的

下一件事是从许多可能的解决方案中选择一个,使1,Tab工作:

  • 完全禁用选项卡键导航
  • 使控件将控件(焦点)传递给特定控件(使选项卡顺序不相关)
  • 使用
    选择nextcontrol
    (最适用于自定义控件,它将在何时支持该选项卡流模式)
  • 防止焦点改变,执行所有逻辑,改变焦点(理论上)

你清楚地解释了问题,但是。。解决办法在哪里=DYou可以使用“验证”或“验证”事件,在失去焦点之前触发。请参阅关于控制事件的参考:PS。我的工作任务刚刚到达,很抱歉没有提供更多的解决方案:)