- - PR -
VB.NET のコンボボックスで選択されたオブジェクトを取得できない
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 も試しましたが、いずれも結果は同じでした。 どこかコードがおかしいか、もしくはコンボボックスのプロパティの設定が間違っているのでしょうか? |
|
投稿日時: 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