- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个在 VS 2010 中使用 VB.Net 构建的 WinForms 应用程序,我正在为以下问题挠头。
我有一个带有组合框的表单,它在加载表单时绑定(bind)到数据源:
With Me.cboCompany
.DataBindings.Clear()
.DataSource = Me.m_dsBidResults.Tables("Company")
.ValueMember = "company_id"
.DisplayMember = "company_name"
.DataBindings.Add("SelectedValue", Me.m_dsBidResults, Company.company_id")
End With
我正在使用 cboCompany.SelectionChangeCommitted 事件按所选公司 ID 过滤数据 GridView :
Private Sub cboCompany_SelectionChangeCommitted(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cboCompany.SelectionChangeCommitted
Dim intCompanyIDN As Integer
intCompanyIDN = CInt(cboCompany.SelectedValue)
SelectBidder(intCompanyIDN) ' sub to filter datagridview, update labels
End Sub
这似乎工作正常,只要用户不将焦点切换到其他控件然后返回组合框即可。切换焦点后,如果用户随后将组合框选择更改为下拉列表中的第一项 (SelectedIndex = 0),则会触发 SelectionChangeCommitted 事件,但 SelectedValue 仍设置为先前选择的值。我已经通过在上面的事件处理程序中添加一个消息框来验证这一点,并排显示 SelectedIndex 和 SelectedValue。
'add this to SelectionChangeCommitted event handler
MsgBox(String.Format("Selected Index: {0}, Selected Value: {1}", cboCompany.SelectedIndex, cboCompany.SelectedValue))
如果用户将 SelectedIndex 更改为 0 以外的任何值,则不会发生这种情况;一切都按预期进行。我已验证我绑定(bind)的表包含 company_id 和 company_name 的唯一值。
我是否需要使用其他事件来验证 SelectedValue 是否已实际更改?或者,欢迎提出可靠解决方法的想法。
最佳答案
从您的表单中删除这一行并重试
.DataBindings.Add("SelectedValue", Me.m_dsBidResults, Company.company_id")
说明:
此代码告诉 combobx 它的 SelectedValue 属性应该绑定(bind)到数据集的 company_id。这是无用的,因为您已经通过设置数据源添加了一个列表,并且您说了 valuemember 和 displaymember 是什么。然后,您通过使用 SelectionChangeCommitted 事件实现了您自己的逻辑,即当值发生变化时它应该做什么。您删除的额外行仅在您有另一个绑定(bind)对象时才有用,例如 Person 类型,该对象具有显示他在哪家公司工作的属性。在这种情况下,当组合框更改时,您希望将选择的 company_id 推送到 Person 对象。有点像
personBindingsource1.DataSource = somePerson;
cboCompany.DataBindings.Add("SelectedValue", personBindingsource1, "WorksAtCompany")
希望它现在更有意义:)
关于.net - WInforms Combobox SelectionChangeCommitted 事件并不总是改变 SelectedValue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9844567/
我是一名优秀的程序员,十分优秀!