我想连接 CheckBoxList 的检查值。我正在使用以下代码,它在表单后面的代码中运行良好:

string sFooType = "";

for (int i = 0; i < chkFooTypes.Items.Count; i++)
{
    if (chkFooTypes.Items[i].Selected)
    {
        if (sFooType == "")
            sFooType = chkFooTypes.Items[i].Text;
        else
            sFooType += "," + chkFooTypes.Items[i].Text;
    }
}

但是,我想将此代码放在自己的类中,以便在需要时调用。相同的 CheckBoxList 以两种不同的形式出现 - 我试图不重复代码。我知道我有点迂腐,但这是学习的唯一途径!

我可以填充一个公共(public)列表,然后连接该列表吗?我难倒的是类(class)如何知道要使用哪个控件/表单。

我确实尝试适应 this solution ,但我无法理解它。我可以看到它如何用于文本框,但不能用于 CheckBoxList

最佳答案

您可以创建一个适用于任何 ListControlextension-metho d(例如 CheckBoxListListBoxDropDownList ):

public static class ListControlExtensions
{
    public static string GetSelectedItemText(this ListControl list, string separator = ",")
    {
        return string.Join(separator, list.Items.Cast<ListItem>()
            .Where(li => li.Selected)
            .Select(li => li.Text));
    }
}

您以这种方式使用它:
string selectedItems = chkFooTypes.GetSelectedItemText();

请注意,您需要添加 using System.Linq;

关于c# - 通过类 c# 将复选框列表值连接到字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21625872/

10-12 18:34