表单上存在大量单选按钮。它们不在面板内,但对于此示例,它们是表单上唯一的一组无线电。
初始化时,将选择否按钮。 (可能,这不是无线电的正确实现,但它超出了我的控制范围;可以说,对于这个例子,表格必须在没有选择单选按钮的情况下开始。)
目前我使用一个相当冗长的if-else语句来逐个检查每个按钮,但我觉得必须有一种更简单的方法来确定,如果没有选中任何按钮,请立即关闭。除了按钮已经作为一个组工作,因为根据定义,最多只能强制选择1个。
检测没有单选按钮的最佳做法是什么?
答案 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()