いつもお世話になっております。
タイトルでは簡単に書いてしまいましたが、
「コード+名称」を保持するコンボボックスから「コード」を元に
「名称」または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
といった感じでは何とかできるのですが、もっと他に簡単な方法が
ないものでしょうか。
方法が有る無しの回答でもかまいませんのでご存知でしたら
ご教授よろしくお願いします。
ComboBoxの派生クラスを作ればよいかと。
コードを格納する List Of String を持たせて
コードと名称を同時にセットするメソッドを作ればおkかと。
SelectedIndexがほしければ List Of String の 「IndexOf」を使えばよい。
ツイート | ![]() |