使用C#从ListBox中的选定项获取ValueMember

Luc*_*cas 6 c# listbox selecteditem valuemember

我正试图从带有C#的ListBox中获取所有选定的项目ValueMember.

例如:

我有这样一个列表:

ID | Name and Lastname
----------------------
1  | John Something
2  | Peter Something2
3  | Mary Smith
Run Code Online (Sandbox Code Playgroud)

这个结构是我的ListBox的一部分.我用这段代码构建了这个列表框:

private void fill_people_listBox()
{
    this.listBoxPeople.DataSource = db.query("SELECT ....");
    this.listBoxPeople.DisplayMember = "people_name_last";
    this.listBoxPeople.ValueMember = "people_id"; 
}
Run Code Online (Sandbox Code Playgroud)

ListBox已成功填充.当用户想要保存更改时,我将遍历此列表以获取所有选定的项目,但我不需要该项目,我需要ID.

例:

1 | John Something.
Run Code Online (Sandbox Code Playgroud)

忽略John Something,得1,所以我不需要DisplayMember,只需要ValueMember.

为此,我尝试了以下几种方法:

        foreach (ListBox selectedItem in this.listBoxGarantes.SelectedItems)
        {
            selectedItem.ToString(); // just an example, I'm printing this.

        }
Run Code Online (Sandbox Code Playgroud)

        string strItem;

        // insert garantes
        foreach (object selectedItem in this.listBoxGarantes.SelectedItems)
        {
            strItem = selectedItem as String;

            strItem; // just an example, I'm printing this.
        }
Run Code Online (Sandbox Code Playgroud)

3º这是最后一个.

        foreach (ListViewItem element in this.listBoxGarantes.Items)
        {
            if (element.Selected)
            {
                element.SubItems[0].Text; // just an example, I'm printing this.
            }
        }
Run Code Online (Sandbox Code Playgroud)

我尝试了几个选项,但我无法成功获得每个元素的ID.我不知道还能做什么.

我希望有人能帮助我.

问候.

Lar*_*ech 5

由于您有多个选择,因此 SelectedValue 属性不会对您有太大帮助,因为您正在通过 SelectedItems 列表进行枚举。

尝试将您的项目转换回 DataRowView 对象:

foreach (var item in listBox1.SelectedItems) {
  MessageBox.Show("ID = " + ((DataRowView)item)["people_id"].ToString());
}
Run Code Online (Sandbox Code Playgroud)