2011-05-20 136 views
2

我想创建一个绑定从我的自定义控件到BindingList中的对象。Winform:绑定自定义控件属性绑定列表

虽然与文本框,我可以随便写

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

随着我的自定义属性“价值”,这件事情不工作(该对象未更新)。

我应该如何使用自定义控件实现该功能?我已经实现了INotifyPropertyChanged,但它不起作用。

我只想让这条线的工作原理:

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

编辑1:

我读这周围网址:http://kbalertz.com/327413/control-using-Visual.aspx不过不是在此刻为我工作,也许我做的东西不对

回答

1

既然你说你绑定的对象没有更新(我是从控制假设 - >对象的变化),但它是正确绑定,也许这将帮助:

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

!!! THAAAAAAAAAAANKS,它解决了一切! – 2011-05-22 13:36:31

+0

我现在有另外一个问题,如果我想在这种情况下使用CUSTOM集合作为数据源呢?我创建了一个自定义集合,但事件并未被解雇。任何建议?观看此问题以获取更多详细信息:http://stackoverflow.com/questions/6105102/create-a-custom-collection-like-bindinglist-that-works-with-listbox-to-create-a-l – 2011-05-25 00:51:25

0
+0

我不确定它是否适合我的问题,我阅读它,但我没有看到任何DataBindings.Add任何地方,只改变数据源和类似的东西,但正如我所说我已经使用BindingList作为数据源,它运作良好。我的问题是关于控制 – 2011-05-20 12:39:44

0

我自己的问题解决了:

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

public event EventHandler CustomPropertyChanged; 

就足以使一切工作。 Obviusly你要调用它时,你的属性修改

编辑1:

我发现了一件坏事,而在文本框,如果控制失去焦点的BindingList得到更新,在我的自定义控件这种事情发生只有当我更改列表框中的选定项目。

我现在没有办法解决这个问题。