2003年9月2日に「.NET2003で複数列表示のコンボボックスにするには?」がありましたが、Comboboxの表示は名称を表示していましたが、プログラム内部では選択されたコードの項目部分も取得したいのですが、取得方法をどなたか教えて下さい。お願いします。
複数機能はそもそも実装されていないので、自分で項目を『描画』して、
複数列のように見せかけているだけです。
コードと名前を対にして管理していた上で、「描画するのは名称だけ」、
取得できるのは「名称もコードも取得できる」ように作りこんでみてください。
もし、現在思い通りにコーディングできていないのであれば、
ご自身で書かれた、現在のコードを見せてください。
どこを修正すれば良いのかをアドバイスできるかもしれません。
ご返答有難う御座います。
掲載された例ですと、コードと名称をコンボのリスト部分に分けて表示、選択された名称をコンボボックスのTextに表示となりますが、
これを項目が変わった段階で、たとえばTextChangedイベントあたりで選択されたコードと名称を拾いあげたいと思っています。
名称は Text で取得出来ますが、コードの取得方法が分からなく、悩んでいます。
Private Sub ComboBox1_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox1.TextChanged
Dim sItemCode As String '***** コード取得用 *****
Dim sItemName As String '***** 名称部分取得用 *****
'***** 選択された名称を取得 *****
sItemName = ComboBox1.Text
'***** 選択されたコードの部分を取得したい *****
sItemCode = ?????
End Sub
ご返答の程、よろしくお願いします。
いや、コードの概要だけ書かれても……。(^_^;)
提示されたコードでは、どのようなデータを渡しているかがわかりませんし。
うまく行かない、というのであれば、コピーしてそのまま動作するような、
現在の「再現可能な最低限のコード」を書いてください。
表示させているデータによって、取得のコードも変わってきます。
(場合によっては、データ側に手を加えなければいけないかもしれませんし)
とりあえず、
http://madia.world.coocan.jp/cgi-bin/VBBBS/wwwlng.cgi?print+200309/03090008.txt
のコードと同じだという前提で書くなら、こんな感じですかね。
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
With ComboBox1
Dim Item As ItemData = DirectCast(.Items.Item(.SelectedIndex), ItemData)
Label1.Text = Item.ISBN
Label2.Text = Item.Title
End With
End Sub
DirectCastしている行のコードは、表示させているデータに合わせてください。
舌足らずの質問でご迷惑を掛け申し訳ありませんでした。
添付していただいたコードを参照させて頂いて、問題解決しました。
有難う御座いました。
ツイート | ![]() |