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

时间:2014-05-26 09:11:08

标签: c# tabs

我在一个表单上有多个控件,当我从组合框中选择一些值时(例如1),下一个控件被启用,否则下一个控件将被禁用。

问题是,如果我只按1和选项卡,则在下一个控件启用后,但程序跳过它就像控件仍然被禁用一样,并且选项卡控件选择下一个控件。

我需要找到方法如何选项卡检查控件是否已启用并继续此控件,如果仍然禁用控件,则继续执行下一个启用的控件。

感谢名单

4 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

让我们假设它的winforms(在wpf中使用禁用/启用这样的方式是对抗mvvm规则)。

首先,确保控件的标签顺序/索引正常。要测试,如果它们都已启用,则按 Tab 应按正确的顺序进行测试。这很容易看出

enter image description here

接下来要选择许多可能的解决方案之一,使 1 Tab 工作:

  • 根本禁用 Tab 键导航;
  • 制作控件以将控制(焦点)传递给特定控件(使制表顺序无关紧要);
  • 使用SelectNextControl(最适合自定义控件,何时支持该选项卡流程架构);
  • 防止焦点改变,做所有逻辑,改变焦点(理论上)。