字符串问题的C#复选框

时间:2010-02-04 14:19:01

标签: c#

我有7个复选框。我想要的是为每个复选框创建一个字符串。如果我有意思......

橙 苹果 梨 李子 葡萄 虎 红色

橙色梨和红色在哪里检查。

我会得到一个产生“orange; pear; red”的字符串

5 个答案:

答案 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替换IsCheckedText替换TagCheckBox控件具有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 };

其中c1c2,...,c7是您的CheckBox es。