2012-01-20 75 views
1

我試圖讓listbox1.SelectedItems的所有標籤,所以我想用這樣一個foreach:不能存取權限列表項

foreach (ListItem itm in listBox1.SelectedItems) 
     { 
      MessageBox.Show(itm.Tag); 
     } 

但VS2010沒有找到「列表項」和我需要添加特定的參考..但我找不到它。我可以做其他事情嗎?或者我可以在哪裏找到參考或裝配。 謝謝!

+2

嘗試使用'var'關鍵字。然後讓編譯器通過將光標懸停在它上面來確定它的類型。 – Aphelion

+0

我想檢索項目的標籤,因爲它與項目的文本不同。 – XandrUu

+0

WinForms應用程序 – XandrUu

回答

2

財產listBox1.SelectedItems返回Object的集合。這些是您選擇的實際對象。沒有ListItem對象。

嘗試使用var關鍵字。然後讓編譯器通過將光標懸停在它上面來確定它的類型。它向你展示了什麼樣的對象類型?

它似乎是ListViewItem但是,您嘗試使用ListItem類型。

+0

那麼我該如何去拋出我所有的listbox1.SelectedItems並顯示它的tagas? – XandrUu

+0

它取決於你放入的對象是否支持'Tag'屬性。你把什麼類型的對象放入列表中? – Aphelion

+0

ListViewItem itms = new ListViewItem(); itms.Text =「test」; itms.Tag = 「test2的」; – XandrUu

1

listBox1.SelectedItems返回對象的集合,因此它取決於它們在將它們添加到列表框時的類型。如果添加它們作爲字符串,例如,你可以這樣做:

foreach (String str in listBox1.SelectedItems) 
{ 
    MessageBox.Show(str); 
} 
0

listBox1.SelectedItems的類型ListBox.ObjectCollection的。你爲什麼要轉換成ListItem?

您可以創建一個自定義對象,使用其綁定到ListBox對象:

listBox1.DataSource = YOUR_CUSTOM_OBJECT_ARRAY 

然後通過你的項目迭代:

foreach (YOUR_CUSTOM_OBJECT itm in listBox1.SelectedItems) 
    { 
     MessageBox.Show(itm.CUSTOM_PROPERTY); 
    } 

您可以在這裏找到一個例子: http://mcpmag.com/articles/2004/02/01/bind-data-to-winforms-controls.aspx

+0

我認爲這有點矯枉過正,因爲ListViewItem具有XandrUu想要的Tag屬性。 – Aphelion