One DataSource for multiple controls

后端 未结 4 682
孤独总比滥情好
孤独总比滥情好 2021-01-18 13:47

I have two ListBox in my winforms application, I assigne a datasource for both of them as follow:

private void MakeMeasurementUnits()
{
    var          


        
相关标签:
4条回答
  • 2021-01-18 14:18

    This is correct behaviour. The datasource management in WindowsForms keeps track of the selected item on control and manipulates binded data too.

    The resolution you've found already: is assign 2 different data sources objects to these controls.

    0 讨论(0)
  • 2021-01-18 14:20

    Yes, this is normal behaviour. It happens because the ListView control uses a BindingSource object to track the currently selected item. (A List has no way to track a selected item without a BindingSource.)

    By default, a DataSource in a WinForms control uses a BindingSource created for it by the WinForms system itself.

    You can read more about the BindingSource at: http://msdn.microsoft.com/en-us/library/system.windows.forms.bindingsource.aspx

    There is an article here which might help too: http://blogs.msdn.com/b/bethmassi/archive/2007/09/19/binding-multiple-comboboxes-to-the-same-datasource.aspx

    0 讨论(0)
  • 2021-01-18 14:25

    The listbox seems to cache the binding source. This is default behavior. If you want to avoid this, the easy way is to create a copy of the list to bind to the second data source:

    lbxXunit.DataSource = units;
    lbxYunit.DataSource = units.ToList();
    

    This is useful when you have multiple views of the same data and want to synchronize the selection of these items.

    0 讨论(0)
  • 2021-01-18 14:27

    The behavior you have noted is the default/correct behavior for winforms controls. You can achieve what you are after by setting a new BindingContext for your second listbox control without creating a copy of your data source.

    BindingContext

    0 讨论(0)
提交回复
热议问题