以编程方式更改组合框的文本
Programmatically Change the text of a Combox
我有一个带有组合框的用户表单,其中有 5 个未绑定的数据项。每一项的取值格式如下:“##说明”,一个2位数字代码和代码说明。用户选择一个项目后,我希望只显示 2 位数字代码。我尝试了以下
Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged
ComboBox1.Text = Mid(ComboBox1.Text, 1, 2)
End Sub
但是在选择一个项目后,分配似乎没有正常工作,因为 ComboBox1.Text
保持不变。有任何想法吗?提前致谢
您必须更改组合框的 Items 集合中的值。如果您只是更改文本 属性,则会发生以下情况:
对我来说,听起来您并没有真正充分发挥组合框的潜力。看起来您想拥有包含多条信息的项目,您正试图将这些信息组合起来。但在这里你可以做些什么
Private Class ComboItem
Public Property Code As Integer
Public Property Description As String
Public ReadOnly Property Display As String
Get
Return Code & " " & Description
End Get
End Property
End Class
Dim lst As New List(Of ComboItem)()
lst.Add(New ComboItem()....) ' add your items
cboList.DataSource = lst
cboList.DisplayMember = "Display"
cboList.ValueMember = "Code"
最精彩的部分从这里开始 - 一旦用户通过键入或单击选择了一个项目,您就可以执行此操作
Dim item As ComboItem = DirectCast(cboList.SelectedItem, ComboItem)
txtCode.Text = item.Code
txtDescription.Text = item.Description
我觉得,这才是你真正需要的。
我有一个带有组合框的用户表单,其中有 5 个未绑定的数据项。每一项的取值格式如下:“##说明”,一个2位数字代码和代码说明。用户选择一个项目后,我希望只显示 2 位数字代码。我尝试了以下
Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged
ComboBox1.Text = Mid(ComboBox1.Text, 1, 2)
End Sub
但是在选择一个项目后,分配似乎没有正常工作,因为 ComboBox1.Text
保持不变。有任何想法吗?提前致谢
您必须更改组合框的 Items 集合中的值。如果您只是更改文本 属性,则会发生以下情况:
对我来说,听起来您并没有真正充分发挥组合框的潜力。看起来您想拥有包含多条信息的项目,您正试图将这些信息组合起来。但在这里你可以做些什么
Private Class ComboItem
Public Property Code As Integer
Public Property Description As String
Public ReadOnly Property Display As String
Get
Return Code & " " & Description
End Get
End Property
End Class
Dim lst As New List(Of ComboItem)()
lst.Add(New ComboItem()....) ' add your items
cboList.DataSource = lst
cboList.DisplayMember = "Display"
cboList.ValueMember = "Code"
最精彩的部分从这里开始 - 一旦用户通过键入或单击选择了一个项目,您就可以执行此操作
Dim item As ComboItem = DirectCast(cboList.SelectedItem, ComboItem)
txtCode.Text = item.Code
txtDescription.Text = item.Description
我觉得,这才是你真正需要的。