如何在表单加载时阻止检查RadioButton?

我似乎无法阻止我的表单检查我的Group Box一个单选按钮

在此处输入图像描述

如设计器所示,那里没有检查Radio Buttons

以下是这个简单表单的所有代码。 没有什么要求在这里或在表单的设计者中检查单选按钮

问:有没有办法阻止在表单加载时检查任何单选按钮

 public ValueTypeSelector() { InitializeComponent(); radioButton1.Checked = false; radioButton2.Checked = false; radioButton3.Checked = false; radioButton4.Checked = false; radioButton5.Checked = false; radioButton6.Checked = false; button1.Enabled = false; button1.Click += clickEvent; button2.Click += clickEvent; radioButton1.Click += clickEvent; radioButton2.Click += clickEvent; radioButton3.Click += clickEvent; radioButton4.Click += clickEvent; radioButton5.Click += clickEvent; radioButton6.Click += clickEvent; } void OnShow(object sender, EventArgs e) { foreach (RadioButton rad in Controls) { if (rad.Checked) { Console.WriteLine("WTF?"); } } } void clickEvent(object sender, EventArgs e) { RadioButton rad = sender as RadioButton; if (rad != null) { if (rad.Checked) { if (rad == radioButton1) { DataType = TableDataType.Boolean; // <= HERE IS THE PROBLEM! FIRES ON FORM LOAD } else if (rad == radioButton2) { DataType = TableDataType.Character; } else if (rad == radioButton3) { DataType = TableDataType.DateTime; } else if (rad == radioButton4) { DataType = TableDataType.Decimal; } else if (rad == radioButton5) { DataType = TableDataType.Integer; } else if (rad == radioButton6) { DataType = TableDataType.String; } else { return; } button1.Enabled = true; } } else if (sender == button1) { DialogResult = DialogResult.OK; Close(); } else if (sender == button2) { DialogResult = DialogResult.Cancel; Close(); } } 

更新:问题是在显示radioButton1时检查radioButton1

  if (rad == radioButton1) { DataType = TableDataType.Boolean; // <= HERE IS THE PROBLEM! FIRES ON FORM LOAD } else if (rad == radioButton2) { 

确保您的radiobuttons不是第一个tabindex = 0控件。 按OK按钮tabindex = 0,然后是radiobuttons。

在设计模式下,您会发现AutoCheck属性设置为true。 只需将其变为假。 在运行期间手动选择它时,不会检查它。

在属性中设置TabStop=False

在表单加载后将checked状态设置为false。 把它放在Shown事件中,看它是否有效。

我认为这可能是VS中的一个错误。 我正在使用2010 SP1,但OP没有提到他们使用的是哪个版本。

在我的一个应用程序中发生了相同的幻像。

将两个单选按钮的Autochecked更改为False,构建了应用程序。 现在未选择受影响的按钮,但现在选择了之前未受影响的其他按钮。

返回代码并在原始按钮上将autocheck设置为true,然后从true切换为false并再次返回新受影响的按钮。 重新跑了,应用程序很好; 没有选择按钮。

当我第一次检查tabIndexes的原始单选按钮时,它们被设置为tabIndex 0; 我改变了,所以这也可能是混合的一部分。