在C#中检查复选框的文本

时间:2016-08-27 09:31:26

标签: c# winforms checkbox

我的Windows窗体应用程序中有4个checkBox,我需要通过从字符串函数返回来获取checkBox的文本,但它给了我一个例外。该函数的代码是:

string getPerm()
{
   string perm = "";
   foreach(CheckBox chkb in this.Controls)
   {
       if(chkb.Checked==true)
       {
           perm += chkb.Text + ",";
       }
   }
   return perm;
}

我在messageBox的Show方法中使用此函数来显示按钮的click事件的结果,还有一个问题是我需要从结果中删除最后一个逗号...问候

1 个答案:

答案 0 :(得分:3)

您可以使用LINQ加入文本:

return string.Join(",", this.Controls.OfType<CheckBox>.Where(x => x.Checked).Select(x => x.Text));

由于CheckBox循环中隐式foreach强制转换,您的代码无效。鉴于并非所有控件都是CheckBox es(这很可能是真的),InvalidCastException会弹出。 OfType<T>方法将确保在查询中仅使用CheckBox es。

补充读物:

Control.Controls

Enumerable.OfType