2016-09-29 50 views
3

我在看,以了解哪些文本框都被检查创建基于字符串的数组变量,例如:如何将项目添加到一个数组来替换变量

string[] checkedItems = new string[10]; 

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

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

后来的结果将用于比较excel电子表格。所以与理解每个项目是“列”

我也试着写:

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

此'checkedItems.SetValue(item,0); '只是要重复覆盖索引'0'处的元素,同时循环检查项目,您是否尝试过使用'for'循环并传入索引? “DocID”来自哪里?你如何输出这些值? – DGibbs

+0

它似乎也在尝试将'object'设置为'string'元素。 – IAbstract

回答

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(); 
} 
相关问题