7

C# を使用して ListBox から選択したすべての項目 ValueMember を取得しようとしています。

例:

私は次のようなリストを持っています:

ID | Name and Lastname
----------------------
1  | John Something
2  | Peter Something2
3  | Mary Smith

この構造は、ListBox の一部です。私はこのコードでこのリストボックスを構築しました:

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

ListBox が正常に設定されました。ユーザーが変更を保存したい場合、このリストをループして選択したすべてのアイテムを取得する必要がありますが、アイテムは必要ありません。ID が必要です。

元。:

1 | John Something.

John Something を無視して 1 を取得します。したがって、DisplayMember は必要なく、ValueMember のみが必要です。

これを行うために、次の方法でいくつかの方法を試しました。

1度

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

        }

2度

        string strItem;

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

            strItem; // just an example, I'm printing this.
        }

3ºそして、とりわけこの最後のもの。

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

いくつかのオプションを試しましたが、各要素の ID をうまく取得できませんでした。他に何をすべきかわかりません。

誰でも私を助けてくれることを願っています。

よろしく。

4

1 に答える 1

5

複数の選択肢があるため、SelectedItems リストを列挙しているため、SelectedValue プロパティはあまり役に立ちません。

アイテムを DataRowView オブジェクトにキャストして戻してみてください。

foreach (var item in listBox1.SelectedItems) {
  MessageBox.Show("ID = " + ((DataRowView)item)["people_id"].ToString());
}
于 2014-03-18T18:13:20.880 に答える