У меня есть приложение Winforms с компонентом BindingSource, и его DataSource настроен на DataSource, который я создал для пользовательского объекта данных. Также на форме есть несколько элементов управления, которые связаны с различными свойствами объекта, предоставляемого через BindingSource. Многие из этих элементов управления являются комбинированными списками и будут отображать значения с вспомогательным перечислением, поэтому я устанавливаю источник данных для этих элементов управления следующим образом:
comboBox1.DataSource = new BindingSource(Utility.ToList(typeof(DataObject.EnumValues)), null);
comboBox1.DisplayMember = "Value";
comboBox1.ValueMember = "Key";
Это все работает достаточно хорошо, но у меня есть два комбинированных списка, которые мне нужно изменить во время выполнения, чтобы отобразить другие значения (с другим обратным перечислением). В этих двух случаях я создаю исходные привязки и источник данных в коде так:
comboBox2.DataBindings.Add(new Binding("SelectedValue", this.bindingSource, "PropertyName1", true));
comboBox2.DataSource = new BindingSource(Utility.ToList(typeof(DataObject.FirstSetOfEnumValues)), null);
comboBox2.DisplayMember = "Value";
comboBox2.ValueMember = "Key";
... и затем, когда мне нужно comboBox2 для привязки и отображения различных значений, я делаю это:
comboBox2.DataBindings.Clear();
comboBox2.DataBindings.Add(new Binding("SelectedValue", this.bindingSource, "PropertyName2", true));
comboBox2.DataSource = null;
comboBox2.DataSource = new BindingSource(Utility.ToList(typeof(DataObject.SecondSetOfEnumValues)), null);
comboBox2.DisplayMember = "Value";
comboBox2.ValueMember = "Key";
Насколько я могу судить, это работает должным образом, но это ужасно, и есть got , чтобы быть намного лучшим способом сделать это, верно? Если вы знаете, что это, я хотел бы услышать это! Большое спасибо!