A
active
I tried to use a datasource with a combobox and it didn't work completely so
I build a small test that was much more straight forward then the app.
The test was to see if the combobox dropdown list displayed the correct
data.
However, although the designer shows the combobox the combobox does not
show at runtime.
If you would be so kind as to cut the code below and paste it into a form
maybe you can easily see why the combobox does not display.
Thanks
Public Class Form1
Inherits System.Windows.Forms.Form
'Form overrides dispose to clean up the component list.
<System.Diagnostics.DebuggerNonUserCode()> _
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
MyBase.Dispose(disposing)
End Sub
Friend WithEvents ComboBox1 As WindowsApplication1.StringWithIntegerComboBox
'Required by the Windows Form Designer
Private components As System.ComponentModel.IContainer
'NOTE: The following procedure is required by the Windows Form Designer
'It can be modified using the Windows Form Designer.
'Do not modify it using the code editor.
Private Sub InitializeComponent()
Me.ComboBox1 = New WindowsApplication1.StringWithIntegerComboBox
Me.SuspendLayout()
'
'ComboBox1
'
Me.ComboBox1.Location = New System.Drawing.Point(136, 139)
Me.ComboBox1.Name = "ComboBox1"
Me.ComboBox1.Size = New System.Drawing.Size(235, 21)
Me.ComboBox1.TabIndex = 0
'
'Form1
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(572, 341)
Me.Controls.Add(Me.ComboBox1)
Me.Name = "Form1"
Me.Text = "Form1"
Me.ResumeLayout(False)
End Sub
End Class
Public Class StringWithIntegerComboBox
Inherits System.Windows.Forms.ComboBox
Public Sub New()
MyBase.New()
Me.DataSource = myList
Me.DisplayMember = "Str"
Me.ValueMember = "Value"
myList.Add(New StringWithInteger("One", 1))
myList.Add(New StringWithInteger("Two", 2))
myList.Add(New StringWithInteger("Three", 3))
End Sub
Public myList As List(Of StringWithInteger) = New List(Of StringWithInteger)
End Class
Public Class StringWithInteger
Private mInteger As Integer
Private mString As String
Private mToStringDisplaysInteger As Boolean = False
Public Sub New(ByVal str As String, ByVal value As Integer)
mString = str
mInteger = value
End Sub
Public Function Clone() As StringWithInteger
Clone = New StringWithInteger(mString, mInteger)
End Function
Public Overrides Function ToString() As String
If mToStringDisplaysInteger Then
ToString = CStr(mInteger)
Else
ToString = mString
End If
End Function
Public Property Str() As String
Get
Str = mString
End Get
Set(ByVal text As String)
mString = text
End Set
End Property
Public Property ToStringDisplaysSingle() As Boolean
Get
ToStringDisplaysSingle = mToStringDisplaysInteger
End Get
Set(ByVal displayInteger As Boolean)
mToStringDisplaysInteger = displayInteger
End Set
End Property
Public Property Value() As Integer
Get
Value = mInteger
End Get
Set(ByVal numb As Integer)
mInteger = numb
End Set
End Property
End Class
I build a small test that was much more straight forward then the app.
The test was to see if the combobox dropdown list displayed the correct
data.
However, although the designer shows the combobox the combobox does not
show at runtime.
If you would be so kind as to cut the code below and paste it into a form
maybe you can easily see why the combobox does not display.
Thanks
Public Class Form1
Inherits System.Windows.Forms.Form
'Form overrides dispose to clean up the component list.
<System.Diagnostics.DebuggerNonUserCode()> _
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
MyBase.Dispose(disposing)
End Sub
Friend WithEvents ComboBox1 As WindowsApplication1.StringWithIntegerComboBox
'Required by the Windows Form Designer
Private components As System.ComponentModel.IContainer
'NOTE: The following procedure is required by the Windows Form Designer
'It can be modified using the Windows Form Designer.
'Do not modify it using the code editor.
Private Sub InitializeComponent()
Me.ComboBox1 = New WindowsApplication1.StringWithIntegerComboBox
Me.SuspendLayout()
'
'ComboBox1
'
Me.ComboBox1.Location = New System.Drawing.Point(136, 139)
Me.ComboBox1.Name = "ComboBox1"
Me.ComboBox1.Size = New System.Drawing.Size(235, 21)
Me.ComboBox1.TabIndex = 0
'
'Form1
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(572, 341)
Me.Controls.Add(Me.ComboBox1)
Me.Name = "Form1"
Me.Text = "Form1"
Me.ResumeLayout(False)
End Sub
End Class
Public Class StringWithIntegerComboBox
Inherits System.Windows.Forms.ComboBox
Public Sub New()
MyBase.New()
Me.DataSource = myList
Me.DisplayMember = "Str"
Me.ValueMember = "Value"
myList.Add(New StringWithInteger("One", 1))
myList.Add(New StringWithInteger("Two", 2))
myList.Add(New StringWithInteger("Three", 3))
End Sub
Public myList As List(Of StringWithInteger) = New List(Of StringWithInteger)
End Class
Public Class StringWithInteger
Private mInteger As Integer
Private mString As String
Private mToStringDisplaysInteger As Boolean = False
Public Sub New(ByVal str As String, ByVal value As Integer)
mString = str
mInteger = value
End Sub
Public Function Clone() As StringWithInteger
Clone = New StringWithInteger(mString, mInteger)
End Function
Public Overrides Function ToString() As String
If mToStringDisplaysInteger Then
ToString = CStr(mInteger)
Else
ToString = mString
End If
End Function
Public Property Str() As String
Get
Str = mString
End Get
Set(ByVal text As String)
mString = text
End Set
End Property
Public Property ToStringDisplaysSingle() As Boolean
Get
ToStringDisplaysSingle = mToStringDisplaysInteger
End Get
Set(ByVal displayInteger As Boolean)
mToStringDisplaysInteger = displayInteger
End Set
End Property
Public Property Value() As Integer
Get
Value = mInteger
End Get
Set(ByVal numb As Integer)
mInteger = numb
End Set
End Property
End Class