我正在使用1个组合框来填充第二个组合框。然而,正在发生的是第二个组合框下拉列表正在改变并显示正确的值但是当发生更改时,text属性仍然保留旧值。我正在使用items.clear(),并认为这也将清除组合框的文本值。
我正在使用winforms,如果有人能指出我的新手错误,我将不胜感激。感谢
Private Sub cmbCustomer_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbCustomer.SelectedIndexChanged
' This is the routine to populate the departments box with values from customer
sql = "SELECT * from Departments WHERE Customer = ?"
Dim cmd As New OleDb.OleDbCommand
cmd.Parameters.AddWithValue("@p1", cmbCustomer.Text)
cmd.CommandText = sql
cmd.Connection = oledbCnn
dr = cmd.ExecuteReader
cmbDept.Items.Clear()
cmbRequestBy.Items.Clear()
While dr.Read()
cmbDept.Items.Add(dr("Name"))
End While
cmd.Dispose()
dr.Close()
'oledbCnn.Close()
End Sub
答案 0 :(得分:2)
您正在清除Items集合而不是组合的Text属性。
此行为取决于组合框的DropDownStyle
属性。
默认值为DropDown
,允许组合为项目(某种列表)和文本(文本框)维护单独的内部控件
如果您将属性更改为DropDownList
清除项目集合,则还会清除其中的“文本”部分。
当然你没有在组合框的TextBox部分内输入的可能性,例如添加一个未包含在列表中的项目
有关类似问题的Microsoft回复,请参阅Microsoft Connect