0

我有三个单选按钮。请看图片。

单选按钮

我定义了一个变量

char temp;

我想要的是

如果选择“男性”,则

temp = "M";

如果选择“女性”,则

temp = "F";

如果选择“两者”,则

temp = "B".

我未完成的代码:

temp = Convert.ToChar(this.Controls.OfType<RadioButton>().FirstOrDefault(r => r.Checked));

谢谢你的建议。

编辑: 控件位于组框中。在调试模式下。我有一个错误。

?groupBox4.Controls.OfType() {System.Linq.Enumerable.OfTypeIterator} 来源:null 和 ?groupBox4.Controls.OfType().FirstOrDefault(r=>r.Checked).Text 表达式不能包含 lambda 表达式

编辑 2: 见图片。运行代码获取异常。 错误

4

2 回答 2

3

如果我理解正确,那么这是基于您(不那么推荐)假设每个 RadioButton 的名称以不同的字母开头。

temp = Convert.ToChar(this.Controls.OfType<RadioButton>().FirstOrDefault(r => r.Checked).Name.Substring(0, 1));

编辑: 相同的假设,但基于Text属性而不是Name属性

    temp = Convert.ToChar(this.Controls.OfType<RadioButton>().FirstOrDefault(r => r.Checked).Text.Substring(0, 1));

Edit2:(基于 OPs Edit - 检查 Checked RadioButton 是否存在):

RadioButton rb = this.Controls.OfType<RadioButton>().FirstOrDefault(r => r.Checked);

if (rb != null)
{
    temp= rb.Text[0];
}
于 2012-06-04T13:46:42.600 回答
0

它应该是:

Controls.OfType<RadioButton>().Where(r => r.Checked).FirstOrDefault();
于 2012-06-04T17:34:03.893 回答