【问题标题】:Winform: Binding a custom control property to a BindingListWinform:将自定义控件属性绑定到 BindingList
【发布时间】:2011-08-29 14:42:00
【问题描述】:

我正在尝试创建从自定义控件到 BindingList 中对象的绑定。

虽然有文本框,但我可以轻松编写

textBox.DataBindings.Add("Text",myBindingList,"PropertyOfObjectOfBindingList")

使用我的自定义属性“值”,这个东西不起作用(对象没有得到更新)。

我应该用我的自定义控件实现什么才能使其正常工作?我已经实现了 INotifyPropertyChanged,但它不起作用。

我只想让这条线正常工作:

customControl.DataBindings.Add("CustomProperty",myBindingList,"PropertyOfObjectOfBindingList")

编辑 1:

我在网上看到这个:http://kbalertz.com/327413/control-using-Visual.aspx 但是目前对我不起作用,也许我做错了什么

【问题讨论】:

    标签: c# winforms binding bindinglist


    【解决方案1】:

    既然你说你的绑定对象没有得到更新(我假设从 Control -> Object changes),但它被正确绑定,也许这会有所帮助:

    customControl.DataBindings.Add("CustomProperty", list, "BoundObjectProperty", 
        false, DataSourceUpdateMode.OnPropertyChanged);
    

    【讨论】:

    • 我现在遇到了另一个问题,如果我想在这种情况下使用 CUSTOM 集合作为数据源怎么办?我创建了一个自定义集合,但没有触发事件。有什么建议吗?观看此问题了解更多详情:stackoverflow.com/questions/6105102/…
    【解决方案2】:

    【讨论】:

    • 我不确定它是否适合我的问题,我读过它,但我没有看到任何 DataBindings.Add 任何地方,只更改数据源和类似的东西,但正如我所说的那样已经使用 BindingList 作为数据源,并且效果很好。我的问题是关于控制
    【解决方案3】:

    我自己解决了这个问题:

    虽然我链接的文章是一个很好的建议,但有一个错误的部分;您不必使用 PropertyChangedEventHandler 在自定义类中创建事件,而只需使用 EventHandler。

    public event EventHandler CustomPropertyChanged;
    

    足以让一切正常。显然你必须在你的属性改变时调用它

    编辑 1:

    我发现了一件坏事,在文本框上,如果控件失去焦点,绑定列表会更新,在我的自定义控件上,只有当我更改列表框中的选定项目时才会发生这种情况。

    目前我没有找到解决此问题的方法。

    【讨论】:

      猜你喜欢
      • 2011-05-11
      • 2011-06-22
      • 2013-12-25
      • 1970-01-01
      • 2012-08-29
      • 2018-03-11
      • 1970-01-01
      • 2023-03-28
      相关资源
      最近更新 更多