簡體   English   中英

獲取綁定列表框選定的值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM