2010-04-09 70 views
2

我正在從啓用了多選的Winforms列表框中獲取選定的值(請注意VALUES NOT TEXT),並已綁定到獲取名稱的數據庫表DisplayMember)和ID(作爲ValueMember) - 我需要所選項目的ID。.NET 3.5列表框選定的值(Winforms)

列表框控件的屬性爲SelectedValue以獲取所選項目值之一,但不是所有選定項目值。

SelectedItems屬性返回Listbox.SelectedObjectCollection從中我似乎無法提取項目的VALUES。

請幫忙!謝謝。

+1

您可以添加一些代碼來顯示如何在列表框中插入項目嗎? – 2010-04-09 15:17:00

+0

列表框已被綁定到數據庫表中,名稱爲DisplayMember,ID爲ValueMember – Jimbo 2010-04-09 15:22:02

回答

4

試着將集合中的每個object鑄造成所需的type。例如,如果我的項目是Customer類型的,我可以做這樣的事情...

var selected = listBox1.SelectedItems; 

foreach (var item in selected) 
{ 
    var singleCustomer = (Customer)item; 
} 

現在你可以讓你從Customer想要的任何財產。

這只是一個簡單的例子,但我相信你可以將這個概念應用於你的問題。

UPDATE(問題是更新後,指示列表框綁定到表):

如果你綁定到DataTable,你可以嘗試這樣的事情(再次,微不足道,但培訓相關):

var selected = listBox1.SelectedItems; 

foreach (var item in selected) 
{ 
    var itemArray = ((DataRowView)item).Row.ItemArray; 

    var name = itemArray[0]; 
    var id = itemArray[1]; 
} 
+0

這是我手動添加東西的方式,但我不知道它如何與綁定控件一起使用。 – 2010-04-09 15:30:56

3

SelectedItems是你想要的。

僅當您設置DisplayMember和ValueMember時,SelectedItem和SelectedValue纔會有所不同。我不認爲這是多選的支持。

什麼類型的項目添加到列表框?

+0

道歉,我已經更新了最初的問題 - 我已經將控件綁定到名爲DisplayMember的數據庫表和ValueMember的ID。我想獲取選定的項目編號 – Jimbo 2010-04-09 15:21:03

+0

請參閱@Steve Dignans答案,您可能需要將其轉換爲CustomerRow或其他內容。 – 2010-04-09 15:27:24

0

[0]將是 「ValueMember」,和元件[1]將是 「DisplayMember」。假設OP的「ID」字段是整數,請嘗試以下操作:

int selectedCount = lstBxOb10Customer.SelectedItems.Count; 
int[] selectedIDs = new int[selectedCount]; 
string[] selectedNames = new string[selectedCount]; 

for (int selected = 0; selected < selectedCount; selected++) 
{ 
    var itemArray = ((DataRowView)item).Row.ItemArray; 

    selectedIDs[selected] = (int)itemArray[0]; 
    selectedNames[selected] = (string)itemArray[1]; 
}