2012-10-29 49 views
2

您好,我已經搜索了一段時間,似乎無法找到解決我的問題,我已經嘗試了多種方法來通過代碼選擇多個項目在我的列表框中,但沒有工作,我得到的最好結果是我的列表框中的1個選定項目。通過代碼選擇多個列表框項目

基本上我想選擇多個具有相同值的項目。

下面是我的代碼,對不起,如果我看起來新手,但我是編程新手,仍然學習基本的東西。

foreach (string p in listBox1.Items) 
{ 
      if (p == searchstring) 
      { 
       index = listBox1.Items.IndexOf(p); 
       listBox1.SetSelected(index,true); 

      } 
} 

因此,大家可以看到,我想通過我的列表框中的所有項目,以告訴程序循環,併爲每個等於項目「搜索字符串」拿到指標,並將其設置爲選中狀態。

然而,所有這些代碼所做的是選擇列表中的第一個項目,它等於「搜索字符串」使它選中並停止,它不遍歷所有「搜索字符串」項目。

+4

是'SelectionMode'你的列表框設置爲「多個」? – shf301

回答

6

正如評論所說,你應該設置SelectionMode要麼MulitSimpleMultiExpanded根據您的需要,但你還需要使用forwhile循環,而不是foreach,因爲foreach循環不允許集合改變在迭代期間。因此,即使設置這個屬性也不會讓你的代碼運行,你會得到異常。試試這個:

for(int i = 0; i<listBox1.Items.Count;i++) 
{ 
    string p = listBox1.Items[i].ToString(); 
    if (p == searchstring) 
    { 
      listBox1.SetSelected(i, true); 

    } 
} 

您可以使用設計時或設定的SelectionMode無論是在屬性窗口中,例如,使用此代碼的Form的構造函數:

listBox1.SelectionMode = System.Windows.Forms.SelectionMode.MultiSimple; 
+0

他的foreach循環很好。您只能添加或刪除正在迭代的集合中的項目。他不在做什麼。 –

+1

@LeeO。自己嘗試一下,你會發現它會拋出異常。在大多數情況下,我會在發佈前檢查代碼(只要我能夠創建測試平臺),我沒有足夠的信譽來允許自己發佈無法正常工作的代碼。 –

相關問題