如何将项添加到数组以替换变量

时间:2016-09-29 15:53:56

标签: c# arrays foreach

我正在研究创建一个基于字符串的变量数组,以便了解哪些文本框已被检查,例如:

string[] checkedItems = new string[10];

        foreach (object item in checkedList.CheckedItems)
        {
            checkedItems.SetValue(item, 0);                                                         
        }

我基本上需要这个,了解哪些复选框已被勾选,然后显示结果。

稍后,结果将用于比较Excel电子表格。因此,理解每个项目都是一个" Column"

我也尝试过写作:

checkedItems.SetValue(item, 0);
checkedItems.SetValue(item, 1);
checkedItems.SetValue(item, 2);
checkedItems.SetValue(item, 3);

这只是显示例如:

Array slot 1 = DocID
Array slot 2 = DocID
Array slot 3 = DocID.

我相信这是因为它只是为每个复选框循环。有10个。

1 个答案:

答案 0 :(得分:2)

根据MSDN的信息,示例显示:

foreach(object itemChecked in checkedListBox1.CheckedItems) {

    // Use the IndexOf method to get the index of an item.
    MessageBox.Show("Item with title: \"" + itemChecked.ToString() + 
                    "\", is checked. Checked state is: " + 
                    checkedListBox1.GetItemCheckState(checkedListBox1.Items.IndexOf(itemChecked)).ToString() + ".");
}

为了使其适应您的问题,我们可能会这样做:

string[] GetCheckedItems() {
    //  use a list because the number is not interrogated
    var checkedItems = new List<string>();

        foreach (object item in checkedList.CheckedItems) {
            checkedItems.Add(item.ToString());                                                         
        }

    return checkedItems.ToArray();
}

...或者您可以查询已检查项目的数量:

string[] GetCheckedItems() {
    //  interrogate checked items count
    var checkedItems = new string[checkedList.CheckedItems.Count];

        for (int i = 0; i < checkedItems.Length; i++) {
            checkedItems[i] = checkedList.CheckedItems[i].ToString();                                                         
        }

    return checkedItems;
}

...或者如果您对Linq感到满意:

string[] GetCheckedItems() {
    return checkedList.CheckedItems
        .Select(ci => ci.ToString())
        .ToArray();
}