[英]Get bound listbox selected values
我以為這很簡單,但事實並非如此
我有帶有綁定列表框的Windows窗體(具有值成員和顯示成員)
我為列表框啟用了多選
所以我需要獲取所有且只有所選項目的所選值(請記住它是綁定的,因此我需要所選值不是文本或所選文本)
所以我可以將這些值插入其他一些表中
我嘗試了這個但是沒有用
for (int x = 0; x <= listProjects.SelectedItems.Count; x++)
{
if(listProjects.GetSelected(x) == true)
{
string d = listProjects.SelectedValue.ToString();
string s = listProjects.SelectedItems[x].ToString();
//listProjects.DisplayMember[x].ToString();
//listProjects.Items[x].ToString();
}
}
當您將項目綁定到ListBox時,ListBox.Items將是您綁定到它的項目的類型,因此,如果假定您的項目是BoundItemType類型,而Value是BoundItemType的屬性,則可以執行以下操作:
for (int x = 0; x <= listProjects.SelectedItems.Count; x++)
{
BoundItemType boundItem = listProjects.SelectedItems[x] as BoundItemType;
string selectedValue = boundItem.Value;
}
假設您的DataSource
元素類型為ItemType
,並且值成員為ItemValue
,我們可以將( object
)每個選定項都ItemValue
轉換為該類型,並獲取所需的值:
var values = listBox1.SelectedItems.OfType<ItemType>()
.Select(item=>item.ItemValue).ToList();
您始終可以在不了解底層項目類型的情況下使用Reflection
,只是要確保ValueMember
有效。 但是,我認為這僅供參考,不建議使用 :
var values = listBox1.SelectedItems.OfType<object>()
.Select(item=> item.GetType()
.GetProperty(listBox1.ValueMember)
.GetValue(item, null)).ToList();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.