C# 选项卡索引对单选按钮无效

C# 选项卡索引对单选按钮无效,c#,winforms,tabs,radio-button,C#,Winforms,Tabs,Radio Button,这是我要问的表格的一部分 这是选项卡索引: 问题是选项卡从状态变为是,然后变为所有者银行名称,而不是变为否 请注意,是和否已经分别具有0.1.6.0和0.1.6.1 你能帮我吗 通知 两个单选按钮都有TabStop属性到TrueFrom(MSDN): 单选按钮组在运行时只有一个制表位。所选按钮(即其选中属性设置为true的按钮)的TabStop属性自动设置为true,而其他按钮的TabStop属性设置为false 换句话说,你所看到的是正常的。这些“是/否”单选按钮位于同一组中,您不能在同一

这是我要问的表格的一部分

这是选项卡索引:

问题是
选项卡
状态
变为
然后变为所有者银行名称,而不是变为否

请注意,是和否已经分别具有
0.1.6.0
0.1.6.1

你能帮我吗

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

From(MSDN):

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

换句话说,你所看到的是正常的。这些“是/否”单选按钮位于同一组中,您不能在同一组中的单选按钮之间进行制表。在使用选项卡时,您将只关注当前选定的控件,然后移动到窗体上的下一个控件(在您的示例中,是一个文本框)

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

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

它对我有效! 首先,您必须创建如下方法:

private void TabStopChanged(object sender, EventArgs e)
{
     ((RadioButton)sender).TabStop = true;
}
然后,将其放入表单加载事件中:

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);
   }
}

似乎它们在不同的容器中(一个分组框或一个没有边框的面板?@Steve是的,它们在一个分组框中,我需要它,但是分组框有索引选项卡
0.1.6
asexpected@Steve边框为红色,如下面的答案所述,这是TabStop关于单选按钮的正常行为。这里有一个解决方法,不确定它是否在所有可能的情况下都能工作,在WinForms中使用“标准”方式很少是一个好主意。问题没有完全解决,当我启动表单时,没有选择任何内容,因此选项卡工作正常,但是如果我选择“是”选项,然后我尝试该选项卡,该选项卡不工作,我的意思是,它又转到下一个文本框:(由于MSDN链接不明显,后来才添加,在分组单选按钮之间移动的默认键盘快捷键是右/左箭头键,而不是选项卡,出于某种原因。对我来说,这与使用空格键选中/取消选中复选框而不是单选按钮一样直观(除非未选择组中的任何按钮,但空格键没有进一步的效果…)它对我有效。:)如果单选按钮放置在groupbox或panel中,则更改foreach循环,如foreach(此.groupBox1.Controls中的var项)。这仅在选中其中一个单选按钮时有效。如果未选中任何单选按钮,则不起作用。