.NET(のコンボボックスのデータの持ち方について)

解決


しー  2003-12-24 20:12:37  No: 81113

.NET  VBでコンボボックスに二つのデータをもちたいのです。
VB6.0では下記のようなコードを書いていました。
ですが、.NETでは、「ItemData」に相当するものが見つかりません。
ひとつのItemに二つのデータを持ちたいときはどのようにすれば
よろしいのでしょうか?
教えてください。

With cbodata

        For i = 0 To objrs.EOF

                .AddItem(objrs.field(0))
                .ItemData(.NewIndex) = objrs.field(1)

        Next

End With


魔界の仮面弁士  2003-12-24 21:04:02  No: 81114

ComboBox.Items.Addメソッドの引数が、String型ではなく、
Object型になっている事に、気づかれましたか?

VB6では、StringのデータをItemで扱い、対応するLong値をItemDataで扱っていましたが、
System.Windows.Forms.ComboBox では、任意のオブジェクトを扱えるように設計されています。
そのため、ItemDataは不要なのです。

Friend Class PersonalInfo
    Public Code As Short
    Public Name As String
    Public Sub New(ByVal Code As Short, ByVal Name As String)
        Me.Code = Code
        Me.Name = Name
    End Sub
    Public Overrides Function ToString() As String
        Return Name
    End Function
End Class

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    With Me.ComboBox1.Items
        .Add(New PersonalInfo(1, "コーラ"))
        .Add(New PersonalInfo(2, "コーヒー"))
        .Add(New PersonalInfo(3, "烏龍茶"))
    End With
End Sub

Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
    Const MsgFmt As String = "商品コード:{0:000}" & vbCrLf & "商品名称:{1}"
    With DirectCast(Me.ComboBox1.SelectedItem, PersonalInfo)
        MessageBox.Show(String.Format(MsgFmt, .Code, .Name))
    End With
End Sub


魔界の仮面弁士  2003-12-24 22:04:27  No: 81115

プロパティ名の記述が間違っていたので、訂正します。

誤:
> VB6では、StringのデータをItemで扱い、対応するLong値をItemDataで
正:
  VB6では、StringのデータをListで扱い、対応するLong値をItemDataで

# サンプルを見直してみたら、クラス名が "PersonalInfo" なのに、
# 個人情報ではなく、商品情報を入力しちゃってますね。(恥)
# 動作的には問題ないとは言え、他の名前にしておけば良かったなぁ…。
http://madia.world.coocan.jp/cgi-bin/VBBBS/wwwlng.cgi?print+200309/03090008.txt


しー  2003-12-25 20:18:13  No: 81116

魔界の仮面騎士さん、とってもわかりやすかったです!!
おかげで、できました〜〜。
本当にありがとうございました。


魔界の仮面弁士  2003-12-25 20:41:23  No: 81117

# ゴミレス。

> 魔界の仮面騎士さん
違います。(泣)


しー  2003-12-25 21:40:47  No: 81118

すみません、すっかり勘違いです(>_<)
教えていただいてるのに、間違えてしまってすみませんでした。


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

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






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