我的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事件的结果,还有一个问题是我需要从结果中删除最后一个逗号...问候
答案 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。
补充读物: