【问题标题】:Conver radiobutton to a char将单选按钮转换为字符
【发布时间】:2012-06-05 01:34:03
【问题描述】:

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

我定义了一个变量

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} 来源:空 和 ?groupBox4.Controls.OfType().FirstOrDefault(r=>r.Checked).Text 表达式不能包含 lambda 表达式

编辑 2: 看图片。运行代码获取异常。

【问题讨论】:

  • this.Controls.OfType&lt;RadioButton&gt;().FirstOrDefault(r =&gt; r.Checked).Text[0]
  • @Love - 当您说“处于调试模式”时,您是指调试窗口之一(立即?,输出?)还是您只是遇到异常?看看这个solves your problem
  • 您不能在即时窗口中使用 Lambda 表达式(请参阅我在上面的评论中添加的链接)。但我不明白为什么这对您的问题或答案有任何影响......运行代码而不尝试在即时窗口中处理它并检查它是否有效。
  • 我猜当没有选中单选按钮时会发生这种情况?我在下面更新了我的答案....
  • 我确实检查了一个按钮,但我发现 rb=null。这意味着代码中有问题。也许是 FirstOrDefault???

标签: c# winforms linq radio-button


【解决方案1】:

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

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];
}

【讨论】:

  • 您也可以设置Tag 属性并检索它。
  • 它是windows窗体应用程序。没有客户 ID。对不起。
  • @Love 然后你可以使用 Name 而不是 ClientId... (更新了代码)。文本选项将在这两个项目中起作用。正如我所说,我仍然不确定这是否正是您所需要的......
  • 您应该进一步限制为仅在 GroupBox 中的控件,否则您会在整个表单上找到第一个选中的单选按钮(这可能是完全不同的东西)。另外,一定要检查一个单选按钮是否真的被选中,否则你会得到一个空引用异常调用Text:grpGender.Controls.OfType&lt;RadioButton&gt;().FirstOrDefault(r =&gt; r.Checked)
  • @Love - 在我编写的代码中,您是否遇到了该错误?请使用更新后的代码更新您的问题
【解决方案2】:

应该是:

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

【讨论】:

    猜你喜欢
    • 2011-01-03
    • 2014-03-18
    • 1970-01-01
    • 2013-12-02
    • 1970-01-01
    • 1970-01-01
    • 2017-07-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多