- PR -

VB.NET のコンボボックスで選択されたオブジェクトを取得できない

1
投稿者投稿内容
NY@CAN
会議室デビュー日: 2004/02/22
投稿数: 1
投稿日時: 2004-02-22 07:33
はじめまして。VB.NET初心者です。
フォーム上のコンボボックスで取得されたアイテムのオブジェクトを取得するという簡単なことなのですが、どうしてもうまくいかず、みなさんのお知恵を拝借したく投稿させていただきました。
データベースから読み込んだデータの名前フィールドをコンボボックスに表示させ、選択された名前に対応したIDをその後の処理したいため、IDと名前という単純な構成の ListItem というクラスを作り、コンボボックスに格納しています。(コンボボックスの表示は正しく行われています。)
SelectedIndexChanged イベントでデバックしてみると、SelectedIndex は現在選択されているアイテムのインデックスを正しく取得していますが、SelectedItem および Items(SelectedIndex) を使って選択されたオブジェクトを取得しようとすると、コンボボックス内のどのアイテムを選択しても、常時同じオブジェクトが返されてしまいます。
コードは以下のとおりです。

Private Sub cb_Vendor_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cb_Vendor.SelectedIndexChanged
Dim curIndex As Integer
Dim curItem As ListItem

curIndex = cb_Vendor.SelectedIndex '選択アイテムのインデックスが正しく返される
curItem = cb_Vendor.Items(curIndex) '選択アイテムが返されない

End Sub

cb_Vendor.Items(curIndex) の代わりに cb_Vendor.SelectedItem も試しましたが、いずれも結果は同じでした。
どこかコードがおかしいか、もしくはコンボボックスのプロパティの設定が間違っているのでしょうか?
Jubei
ぬし
会議室デビュー日: 2002/03/02
投稿数: 830
お住まい・勤務地: 関西
投稿日時: 2004-02-22 21:08
諸農です。

ListItemというクラスを作成し、個々のインスタンスをArrayListに
格納して、ComboBoxのDisplayMemberには「ID」を、ValueMemberに
は「名前」を指定したのですね。

であれば、ComboBox.Itemから取得するのではなく、DataSourceに
指定したArrayListから取得すればいいのではないでしょうか?

SDKサンプル
ms-help://MS.NETFrameworkSDKv1.1.JA/cpref/html/frlrfsystemwindowsformslistcontrolclassdisplaymembertopic.htm


_________________
諸農和岳
Powered by Turbo Delphi & Microsoft Visual Studio 2005

十兵衛@わんくま同盟
http://blogs.wankuma.com/jubei/
1

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