在VB.NET中将自定义对象绑定到Checkbox

时间:2012-07-21 21:45:22

标签: vb.net winforms data-binding

我正在尝试将复选框绑定到自定义对象布尔属性,如下所示:

chkTableIsReadonly.DataBindings.Add(New Binding("Checked", objectBindingSource, "ApplyforVisa", True, DataSourceUpdateMode.OnPropertyChanged, False))

自定义类支持INotifyPropertyChanged接口。

当我最初将复选框绑定到新对象时,一切正常:

objectBindingSource.Datasource = new objectToBindTo

这是奇怪的部分:

  1. 如果我选中该框,则调用属性Set并调用INotifyPropertyChanged事件,每个人都很高兴。
  2. 如果我取消选中相同的框,则不会调用属性Set,INotifyPropertyChanged事件永远不会被调用(更糟糕的是),我无法导航到另一条记录。
  3. 我尝试捕获CheckedChanged事件以手动设置object.ApplyForVisa属性,但没有成功。调用属性Set并调用INotifyPropertyChanged事件,但我仍然锁定在控件上,无法导航。

    我曾尝试在CheckedChanged事件中调用bindingsource.endedit,但没有成功。

    只有当我取消选中此框时才重要。复选框是双状态 - true或false。

    我的所有其他绑定工作得很好 - 文本框,组合框,数据网格。不是复选框。

    我唯一的想法是,它看起来像绑定源数据错误,但没有抛出错误。如果我为绑定源添加数据错误事件处理程序,它永远不会被调用。

1 个答案:

答案 0 :(得分:4)

假设ApplyForVisa属性是布尔值,您可以通过将formattingEnabled的{​​{1}}参数设置为False来解决此问题。

Binding