【问题标题】:Determine if no Radio Button is Checked [duplicate]确定是否未选中单选按钮 [重复]
【发布时间】:2012-07-10 08:54:48
【问题描述】:

表单上存在大量单选按钮。它们不在面板内,但在本例中,它们是表单上唯一的一组无线电。

初始化时,no按钮将被选中。 (很可能,这不是单选的正确实现,但它超出了我的控制范围;可以说,对于这个示例,表单必须以未选择单选按钮开始。)

目前我使用一个相当长的 if-else 语句来一次检查每个按钮,但我觉得必须有一种更简单的方法来立即确定是否没有检查任何按钮。除了按钮已经作为一个组工作,因为根据定义,整个过程中最多强制选择 1 个。

检测是否没有选择单选按钮的最佳做法是什么?

【问题讨论】:

  • 如果它们确实是单选按钮,则应该始终选择其中一个,并且选项组中应该有一个属性告诉你选择了哪个
  • @RobertHarvey 不在初始化时。在初始化时,它们都“关闭”
  • 然后在初始化时设置一个默认的。单选按钮并不打算全部取消选中。
  • 你说的最有效的方法是什么意思?

标签: c# winforms radio-button radiobuttonlist


【解决方案1】:

您总是可以创建单选按钮的集合:

RadioButton[] radioButtons = new RadioButton[] { radioButton1, radioButton2 };

if (!radioButtons.Any(rb => rb.Checked))
    // No radio buttons are checked

此外,使用这个类似的问题 (https://stackoverflow.com/questions/1797907) 作为参考,您可以执行以下操作:

if(!Controls.OfType<RadioButton>().Any(rb => rb.Checked))
    // No radio buttons are checked

【讨论】:

  • 我对“任何”这个词的使用“没有定义”
  • @DanCundy 您的目标可能是 .NET 框架 2.0 或更早版本。您需要 3.5 或更高版本。
【解决方案2】:

我猜是这样的:

form.Controls.Where(x => x is RadioButton).Where(x => x.Selected == true).Count()

或者,如果您将它们放在数组或某种列表中,则不必循环所有控件。

我想你可以通过以下方式加快速度:

form.Controls.Where(x => x is RadioButton && ((RadioButton)x).Selected == true).Count()

【讨论】:

  • 哦,是的.. 当然,正如@itsme86 所说,这样做可能会更好。只是忘记了“任何”。 =)
  • 缺少 system.lync 指令。
猜你喜欢
  • 2015-10-31
  • 1970-01-01
  • 1970-01-01
  • 2016-12-28
  • 2010-11-13
  • 2013-03-09
  • 1970-01-01
  • 2018-02-22
  • 2014-05-13
相关资源
最近更新 更多