I know that several answers that may work for you have already been published, and this question is 3 years old, but I wanted to add another option because I ran into this problem when I was bound to data with objects in the Entity Framework.
I was attached to a ListBox, but wanted to display text from a child. All I did was handle the ListBox.Format event and change the ListControlConvertEventArgs.Value . I could get my child object because the DisplayMember that I selected for the ListBox is the parent object itself and could be accessed in the ListControlConvertEventArgs.ListItem event.
For example, a ListBox is a binding to a binding to a binding source with an objA list. objA has a property for the objB child. The DisplayMember for the ListBox (set at design time) is objB. But since the ToString() method does not return what I want for objB, I handle the Format event from the ListBox and set the e.Value (with e as ListControlConvertEventArgs ) to the object I'm looking for.
CType(e.ListItem, objA).objB.DisplayText
source share