绑定到 DataSource 的 ComboBox 需要添加默认值(空白或在此处添加)和设置回退的能力
Posted
技术标签:
【中文标题】绑定到 DataSource 的 ComboBox 需要添加默认值(空白或在此处添加)和设置回退的能力【英文标题】:ComboBox binding to DataSource need to add default (blank or Add Here) and ability to set back 【发布时间】:2018-05-19 13:22:36 【问题描述】:我在网上阅读了许多条目,似乎找不到任何好的方法来执行以下操作。
我目前正在将数据源绑定到ComboBox
,并在需要时填充它。到目前为止我遇到的问题是用户单击ComboBox
我将数据加载到它并绑定它,但是用户无法将其设置回空白/默认值,并且必须在ComboBox
中留下一个值。
我知道我们可以在加载或其他事件时将ComboBox
设置为SelectItem = -1
,但我没有与触发此条件相关的事件,因为ComboBox
已设置或未设置。
这是我打算采用的方法,但我确信有更好的方法来做到这一点。
If Not IsDBNull(Me.OrgcustomerBindingSource.Current("parentID")) And Me.OrgcustomerBindingSource1.Count = 0 Then
Me.OrgcustomerTableAdapter1.Fill(Me.LookupCustomer.orgcustomer)
Dim dr As DataRow = DirectCast(Me.OrgcustomerBindingSource1.AddNew, DataRowView).Row
dr.BeginEdit()
'Add every column her with ID of 0?
dr.Item("ID") = 0
dr.Item("CompanyName") = ""
'(...)
Me.Validate()
Me.OrgcustomerBindingSource1.EndEdit()
Me.OrgcustomerTableAdapter1.Update(Me.LookupCustomer.orgcustomer)
'Me.ParentIDComboBox.Items.Insert(0, String.Empty)
End If
【问题讨论】:
【参考方案1】:您只需将SelectedIndex
设置为-1 或将SelectedItem
设置为Nothing
即可不选择任何项目。用户无法通过 UI 执行此操作,但您可以在代码中执行此操作,例如处理 KeyDown
并过滤 Ctrl+Del 并设置适当的属性。
【讨论】:
我已经是一个mousedown,即使是填充数据,当用户手动清除框中的文本时,你是在说keydown吗? 我尝试了上述方法并与您一起就 keydown 事件提出了建议,并添加了 ctrl + del 如上所述以上是关于绑定到 DataSource 的 ComboBox 需要添加默认值(空白或在此处添加)和设置回退的能力的主要内容,如果未能解决你的问题,请参考以下文章
C#WinForm中comboBox的DataSource获取数据是显示System.Data.DataRowView
C# winForm程序 数据绑定 更新控件问题 combobox绑定的DataSource 数据表中已经添加了新的数据