2016-09-29 48 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(); 
} 
相關問題