【问题标题】:Tab index is not working on radio buttons选项卡索引不适用于单选按钮
【发布时间】:2014-09-19 18:47:44
【问题描述】:

这是我要询问的表单的一部分

这是标签索引:

tab 的问题是从 Farmer Audi StatusYes然后到 Ownder Bank Name 而不是转到 No

请注意yes和no已经分别有0.1.6.00.1.6.1

你能帮帮我吗?

通知

两个单选按钮都有TabStop 属性到True

【问题讨论】:

  • 似乎它们位于不同的容器内(组框或无边框面板?)
  • @Steve 是的,他们在一个分组框中,我需要那个,但是分组框有索引选项卡 0.1.6 正如预期的那样
  • @Steve 边框是红色的
  • 正如下面的答案中所解释的,这是 TabStop 关于 RadioButtons 的正常行为。这里有一个解决方法stackoverflow.com/a/22694881/1197518 不确定它是否适用于所有可能的情况,并且在 WinForms 中使用“标准”方式做事很少是一个好主意

标签: c# winforms tabs radio-button


【解决方案1】:

来自How to: Set the Tab Order on Windows Forms(MSDN):

单选按钮组在运行时有一个制表位。选中的按钮(即 Checked 属性设置为 true 的按钮)的 TabStop 属性自动设置为 true,而其他按钮的 TabStop 属性设置为 false。

换句话说,您所看到的都是正常的。那些“是/否”单选按钮在同一组中,您不能在同一组中的单选按钮之间切换。当您使用选项卡时,您将只关注当前选定的一个,然后移动到表单上的下一个控件(在您的情况下,是一个 TextBox)。

要解决此问题,您可以将每个单选按钮放置在其自己的容器(例如面板)中,这意味着您将拥有两个“组”,每个组都有一个单选按钮。但是,当您选择另一个单选按钮时,您会失去自动取消选择一个单选按钮的内置功能。您的用户将能够选择两个单选按钮,因此您需要添加一些禁用另一个的逻辑。如果您决定尝试这样做,请尝试使用单选按钮的 CheckedChanged 或 Click / MouseClick 事件。

正如史蒂夫所说,以及他链接到的答案中所述,开箱即用的工作方式是 Windows 的预期行为,所以在覆盖它之前要三思而后行,除非你有充分的理由这样做。

【讨论】:

  • 但是问题并没有完全解决,当我启动表单时,没有选择任何内容,所以选项卡工作正常,但是如果我选择是选项,那么我尝试选项卡,选项卡没有工作,我的意思是它再次进入下一个文本框:(
  • 由于某种原因,由于从 MSDN 链接中无法立即看出,在分组单选按钮之间移动的默认键盘快捷键是右/左箭头键,而不是选项卡,因此添加了迟来的内容。与使用空格键来选中/取消选中复选框而不是单选按钮一样直观(对我来说)(除非选择了组中的任何按钮但空格键没有进一步的效果......)
【解决方案2】:

它对我有用!

首先你必须创建一个这样的方法:

private void TabStopChanged(object sender, EventArgs e)
{
     ((RadioButton)sender).TabStop = true;
}

然后,将其放入您的 Form_Load 事件中:

private void Form_Load(object sender, EventArgs e)
{
   foreach (var item in this.Controls)
   {
      if (item.GetType() == typeof(RadioButton))
         ((RadioButton)item).TabStopChanged += new System.EventHandler(TabStopChanged);
   }
}

【讨论】:

  • 它对我有用。 :) 如果单选按钮放置在组框或面板中,则更改 foreach 循环,如 foreach(var item in this.groupBox1.Controls)
  • 这仅在选中 1 个单选按钮时有效。如果没有选中它就不起作用。
【解决方案3】:

对于单选按钮,您不必使用 Tab 导航。只需使用左右键遍历单选按钮。 查看此链接以了解更多信息 - https://www.csun.edu/universal-design-center/web-accessibility-criteria-tab-order

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-15
    • 2014-12-07
    • 1970-01-01
    • 1970-01-01
    • 2018-05-17
    • 2011-06-15
    • 1970-01-01
    相关资源
    最近更新 更多