我有7个复选框。我想要的是为每个复选框创建一个字符串。如果我有意思......
橙 苹果 梨 李子 葡萄 虎 红色
橙色梨和红色在哪里检查。
我会得到一个产生“orange; pear; red”的字符串
答案 0 :(得分:3)
问题是什么,你需要这个吗?
StringBuilder sb = new StringBuilder();
foreach(var cb in checkBoxes)
{
if(cb.IsChecked)
{
sb.Append(cb.Text);
sb.Append(';');
}
}
答案 1 :(得分:3)
当我想要使用给定的分隔符连接字符串时,我通常会做的是将我的字符串放在字符串数组中,然后使用String.Join
方法。示例:
string.Join(";", new string[] { "test1", "test2", "test3" }); // Which outputs test1;test2;test3
答案 2 :(得分:2)
你可以使用类似的东西:
List<CheckBox> boxes;
String result = String.Join(" ; ", boxes.Where(box => box.Checked)
.Select(box => box.Text).ToArray());
答案 3 :(得分:1)
var values = (from c in new[] { c1, c2, c3, c4, c5, c6, c7 }
where c.Checked
select c.Text).ToArray();
var result = string.Join(";", values);
答案 4 :(得分:0)
您没有指定WinForms与WPF;我将假设WinForms,但WPF的代码几乎完全相同(Checked
替换IsChecked
而Text
替换Tag
。 CheckBox
控件具有Checked
属性,指示CheckBox
是否处于已检查状态。所以说你CheckBox
es在一个数组CheckBox[] checkBoxes
中。然后你可以说
List<string> checkedItems = new List<string>();
for(int i = 0; i < checkBoxes.Length; i++) {
CheckBox checkBox = checkBoxes[i];
if(checkBox.Checked) {
checkedItems.Add(checkBox.Text);
}
}
string result = String.Join(" ; ", checkedItems.ToArray());
当然,那迫不及待和令人讨厌。让我们对LINQ中的一些很好的声明性代码感到满意:
string result = String.Join(
" ; ",
checkBoxes.Where(cb => cb.Checked)
.Select(cb => cb.Text)
.ToArray()
);
如果你的CheckBox
不在数组中,你可以先把它们放在数组中,然后通过
CheckBox[] checkBoxes = new[] { c1, c2, c3, c4, c5, c6, c7 };
其中c1
,c2
,...,c7
是您的CheckBox
es。