- PR -

ListBoxの複数選択時のSelectedValueの取得方法について

1
投稿者投稿内容
ken
大ベテラン
会議室デビュー日: 2006/03/29
投稿数: 121
お住まい・勤務地: 東京
投稿日時: 2008-09-01 10:22
お世話になります。
データベースのアプリケーションを作成しています。
環境は、XPとVS2005 C# になります

その中で、ListBoxを使用していまして
複数選択をさせています。
ListBoxのDataSourceを使用して
項目とIDを格納しています。

//----------------------------------------------
this.listBox_Tiku.DataSource = dtTable_Tiku;
this.listBox_Tiku.ValueMember = "TIKU_COD";
this.listBox_Tiku.DisplayMember = "TIKUNAME";
//----------------------------------------------

複数選択された場合に、このSelectedValueを選択数分
取得するには、どのようにすればよいのでしょうか?
SelectedIndices[i]やSelectedItems[i]をやってみましたが
こちらでは、表示内容と選択項目番号になってしまします。
そうではなくて、ValueMember(TIKU_COD)を取得したいと思っています

ご教授お願いいたします。
rucio
ベテラン
会議室デビュー日: 2002/11/27
投稿数: 98
投稿日時: 2008-09-01 12:48
こんにちは。多分、このケースではSelectedItemsはDataRowViewの集合を返しますから、
DataRowViewを扱う普通の手法で選択されているTIKU_CODを取り出せますよ。

VBの例ですが、こんな感じです。

コード:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Dim dtTable_Tiku As DataTable = GetTable()

        ListBox1.DataSource = dtTable_Tiku
        ListBox1.ValueMember = "TIKU_COD"
        ListBox1.DisplayMember = "TIKUNAME"

        ListBox1.SelectionMode = SelectionMode.MultiSimple

    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        '選択されている項目のTIKU_CODを列挙する
        Dim selects As New List(Of String)

        For Each listRow As DataRowView In ListBox1.SelectedItems
            selects.Add(listRow.Row("TIKU_COD"))
        Next

        MsgBox(String.Join(vbNewLine, selects.ToArray))
    End Sub

    Private Function GetTable() As DataTable

        'ここにDBなどからデータを取得する処理を書く
        '今回は省略して直接指定する。

        Dim table As New DataTable
        table.Columns.Add("TIKU_COD", GetType(String))
        table.Columns.Add("TIKUNAME", GetType(String))

        table.Rows.Add("1", "千代田区")
        table.Rows.Add("2", "港区")
        table.Rows.Add("3", "文京区")
        table.Rows.Add("4", "渋谷区")
        table.Rows.Add("5", "新宿区")

        Return table

    End Function

ken
大ベテラン
会議室デビュー日: 2006/03/29
投稿数: 121
お住まい・勤務地: 東京
投稿日時: 2008-09-01 17:21
rucioさん
レスありがとうございます。

C#に置き換えて試してみましたところ
やりたいことが、できました。

ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)