C# 如何防止在加载表单时检查RadioButton?

C# 如何防止在加载表单时检查RadioButton?,c#,winforms,visual-studio-2010,C#,Winforms,Visual Studio 2010,我似乎无法阻止我的表单选中我的组框中的单选按钮之一: 如设计器中所示,此处未选中任何单选按钮 下面是这个简单表单的所有代码。在此处或表单的设计器中,不需要选中单选按钮 Q:是否有办法防止在加载表单时检查任何单选按钮 public ValueTypeSelector() { InitializeComponent(); radioButton1.Checked = false; radioButton2.Checked = false; radioButton3.Checked

我似乎无法阻止我的表单选中我的
组框中的单选按钮之一

如设计器中所示,此处未选中任何单选按钮

下面是这个简单表单的所有代码。在此处或表单的设计器中,不需要选中单选按钮

Q:是否有办法防止在加载表单时检查任何单选按钮

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

确保单选按钮不是第一个tabindex=0控件。将OK button tabindex设置为0,后跟单选按钮。

在设计模式下,您会发现AutoCheck属性设置为true。把它变成假的。只有在运行时手动选择它时,才会对其进行检查。

加载表单后,将检查状态设置为false。把这个放到显示的事件中,看看它是否工作。

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

我的一个应用程序也出现了同样的幻觉

将两个单选按钮的自动检查更改为False,生成应用程序。现在未选择受影响的按钮,但现在选择了以前未受影响的其他按钮

返回代码并在原始按钮上将“自动检查”设置为“真”,然后在新受影响的按钮上从“真”切换为“假”,然后再次切换。重新运行,应用程序正常;未选择任何按钮


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

在属性中设置
TabStop=False

添加一些单选按钮,并使其不可见:)LOL。我宁愿控制我的代码!啊哈!我知道一定是这么简单!谢谢。@jp2code或在设计器中将单选按钮的自动检查属性设置为false,然后在构造函数中将其设置为true。这似乎也行得通。有更简单的解决办法。在我的回答区查看评论。我只想说这是一个非常愚蠢的错误。谢谢@JP2Code这绝对有效,但不必在设计器中完成。也可以通过编程方式完成:radioButton1.AutoCheck=false;我试图编辑我的内容,但它不允许我。保持AutoDrop和AutoCheck为true可以实现您想要的功能。我想这会起作用。通过这样做,我必须在
clickEvent
处理程序的code中显式地检查
单选按钮,对吗?是的。您可以通过代码或UI检查单选按钮。您可以在CheckedChanged事件中处理更改。谢谢!我可能用拉尔斯泰克的回答作为答案,但我在这个帖子中给了你4张明显的赞成票。这不是问题。我很高兴我能帮上忙。这是我一直试图避免的暴力手段。LarsTech最初的答案是最快的,可以满足我的需要,尽管SaravananArumugam的答案从编码员的角度来看可能更正确。我没有提到它,但它确实有
visual-studio-2010
标签。这里的版主指责人们在主题中张贴带有标签的问题。我认为这是愚蠢的规则。
      if (rad == radioButton1) {
        DataType = TableDataType.Boolean; // <= HERE IS THE PROBLEM! FIRES ON FORM LOAD
      } else if (rad == radioButton2) {