.NET2003で複数列表示のコンボボックスにするには?の拡張質問

解決


SUS304  2003-11-17 01:40:29  No: 80453

2003年9月2日に「.NET2003で複数列表示のコンボボックスにするには?」がありましたが、Comboboxの表示は名称を表示していましたが、プログラム内部では選択されたコードの項目部分も取得したいのですが、取得方法をどなたか教えて下さい。お願いします。


魔界の仮面弁士  2003-11-17 21:53:20  No: 80454

複数機能はそもそも実装されていないので、自分で項目を『描画』して、
複数列のように見せかけているだけです。
コードと名前を対にして管理していた上で、「描画するのは名称だけ」、
取得できるのは「名称もコードも取得できる」ように作りこんでみてください。

もし、現在思い通りにコーディングできていないのであれば、
ご自身で書かれた、現在のコードを見せてください。
どこを修正すれば良いのかをアドバイスできるかもしれません。


SUS304  2003-11-19 06:25:44  No: 80455

ご返答有難う御座います。
掲載された例ですと、コードと名称をコンボのリスト部分に分けて表示、選択された名称をコンボボックスの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

ご返答の程、よろしくお願いします。


魔界の仮面弁士  2003-11-19 19:09:42  No: 80456

いや、コードの概要だけ書かれても……。(^_^;)
提示されたコードでは、どのようなデータを渡しているかがわかりませんし。

うまく行かない、というのであれば、コピーしてそのまま動作するような、
現在の「再現可能な最低限のコード」を書いてください。
表示させているデータによって、取得のコードも変わってきます。
(場合によっては、データ側に手を加えなければいけないかもしれませんし)

とりあえず、
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している行のコードは、表示させているデータに合わせてください。


SUS304  2003-11-20 02:34:41  No: 80457

舌足らずの質問でご迷惑を掛け申し訳ありませんでした。
添付していただいたコードを参照させて頂いて、問題解決しました。
有難う御座いました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加