2

複数選択が有効になっていて、名前 (DisplayMember として) と ID (ValueMember として) を取得するデータベース テーブルにバインドされている Winforms リストボックスから、選択した値 (TEXT ではなく VALUES に注意してください) を取得するために戦っています。選択したアイテムの ID。

リストボックス コントロールにはSelectedValue、選択した項目の値の 1 つを取得するためのプロパティがありますが、すべての選択した項目の値を取得するわけではありません。

プロパティは、アイテムの値を抽出できないように見える を返しSelectedItemsます。Listbox.SelectedObjectCollection

助けてください!ありがとう。

4

3 に答える 3

4

objectコレクション内のそれぞれを目的のにキャストしてみてくださいtype。たとえば、私のアイテムがタイプの場合Customer、私はこのようなことをすることができます...

var selected = listBox1.SelectedItems;

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

これで、から必要なプロパティを取得できますCustomer

これは些細な例ですが、この概念を問題に適用できると確信しています。

更新(リストボックスがテーブルにバインドされていることを示すために質問が更新された後):

にバインドされている場合はDataTable、次のようなものを試すことができます(ここでも、些細なことですが、関連性があります)。

var selected = listBox1.SelectedItems;

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

    var name = itemArray[0];
    var id = itemArray[1];
}
于 2010-04-09T15:21:26.590 に答える
3

SelectedItems はあなたが望むものです。

SelectedItem と SelectedValue は、DisplayMember と ValueMember を設定した場合にのみ異なります。これは複数選択ではサポートされていないと思います。

リストボックスに追加するアイテムのタイプは何ですか?

于 2010-04-09T15:15:39.843 に答える