确定是否未选中单选按钮

时间:2012-07-10 19:48:03

标签: c# winforms radio-button radiobuttonlist

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

初始化时,将选择按钮。 (可能,这不是无线电的正确实现,但它超出了我的控制范围;可以说,对于这个例子,表格必须在没有选择单选按钮的情况下开始。)

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

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

2 个答案:

答案 0 :(得分:5)

您可以随时创建单选按钮的集合:

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

答案 1 :(得分:1)

我会猜这样的事情:

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