0

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

初始化时,不会选择任何按钮。(很可能,这不是单选的正确实现,但它不在我的控制范围内;可以说,对于这个例子,表单必须以没有选择单选按钮开始。)

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

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

4

2 回答 2

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
于 2012-07-10T19:54:37.253 回答
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()
于 2012-07-10T19:55:51.060 回答