Thought I would post this tip as it took me a little while to find the answer.
I had sucessfully bound my custom collection class to a ListBox
control on a WinForm. However, when I attempted to bind to a CheckedListBox
, it was populated with what appeared to be the ToString
method of the collection's items, instead of the property specified for the DisplayMember
.
I had read previously (http://msdn.microsoft.com/en-us/magazine/cc163630.aspx#S4[^]) that it is more efficient to set the DisplayMember
and ValueMember
properties before settings the DataSource
property. Doing so prevents control refreshes.
However, a CheckedListBox
does not display correct values unless the DataSource
is set first.
E.g.:
With ListBox1
.DataSource = Nothing
.DisplayMember = "Source"
.ValueMember = "Destination"
.DataSource = MyCollection
End With
With CheckedListBox1
.DataSource = Nothing
.DataSource = MyCollection
.DisplayMember = "Source"
.ValueMember = "Destination"
End With
Hope this saves someone some time!