コンボボックスの値を取得するには?


なまぐり  2007-06-09 00:36:49  No: 143605

いつもお世話になっております。

タイトルでは簡単に書いてしまいましたが、
「コード+名称」を保持するコンボボックスから「コード」を元に
「名称」またはSelectedIndexを取得することは出来るのでしょうか。

具体的には、
    Public Structure ComboItem
        Public Code As String
        Public Name As String
        Public Overrides Function ToString() As String
            Return Name
        End Function
        Public Sub New(ByVal C As String, ByVal N As String)
            Code = C
            Name = N
        End Sub
    End Structure

のような構造体を定義し、
    With cmb_test
        .Items.Add(New ComboItem("1", "test1"))
        .Items.Add(New ComboItem("2", "test2"))
        .Items.Add(New ComboItem("3", "test3"))
    End With
    intNo = CInt(DirectCast(cmb_test.SelectedItem, ComboItem).Code)

というような感じで選択されている状態のコードは取得できるのですが、
コード値から名称またはコンボボックスのSelectedIndex値を取得するには
(たとえば、intNo = 3 の場合にそのNameである test3 をコンボボックスに
  表示するには)

    for i as integer = 0 to cmb_test..Items.Count - 1
        if intNo = CInt(DirectCast(cmb_test.Items.Item(i), ComboItem).Code) then exit for
    Next
    cmb_test.SelectedIndex = i

といった感じでは何とかできるのですが、もっと他に簡単な方法が
ないものでしょうか。

方法が有る無しの回答でもかまいませんのでご存知でしたら
ご教授よろしくお願いします。


覇王  2007-07-27 08:05:46  No: 143606

ComboBoxの派生クラスを作ればよいかと。

コードを格納する List Of String を持たせて
コードと名称を同時にセットするメソッドを作ればおkかと。

SelectedIndexがほしければ List Of String の 「IndexOf」を使えばよい。


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




  


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