امروز یک نفر در گروه کامپیوتر جنوب در یاهو پرسیده بود که چجوری می شه در ComboBox در VB.NET به غیر از Text مقدارهای دیگری هم برای یک آیتم نوشت . مثل ASP.NET که برای DropDownList هاش می شه یک Text نوشت و یک Value . راه حلی که من بلدم این است . چون آیتم های Combobox می تواند یک Object باشد لذا هر چیزی که تابع ToString را Override بکند می تواند در آن قرار بگیرد (اگر tostring نداشته باشد درون ComboBox تایپ ِ آن را می نویسد ) . مثلا ً کلاس زیر دارای دو property ِ متن و ID است که در تابع ToString مقدار متنی را بر می گرداند .
Public Class ComboItem
Private mID As Integer
Private mText As String
Public Property ID() As Integer
Get
Return mID
End Get
Set(ByVal Value As Integer)
mID = Value
End Set
End Property
Public Property Text() As String
Get
Return mText
End Get
Set(ByVal Value As String)
mText = Value
End Set
End Property
Public Overrides Function ToString() As String
Return Text
End Function
End Class
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
For i As Integer = 0 To 9
Dim x As New ComboItem
x.ID = i
x.Text = "salam" & i
ComboBox1.Items.Add(x)
Next
End Sub
'''''''Read data
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim x As ComboItem
x = ComboBox1.SelectedItem
MessageBox.Show(x.ID)
End Sub
در رویداد load ِ فرم هم روش پر کردن Combobox و در Button1_click هم روش خواندن مقدار آن را نوشتم . با این روش می توان به جای یک ID انواع و اقسام مقادیر را به آیتم های combobox نسبت داد .