C# Windows Forms Событие SelectionChangeCommitted ComboBox предотвращает изменение выделения, когда в нем изменяется свойство BindingSource Combobox.
Использование объектов C# Entity Framework, как показано ниже 2
вещь:
- имя элемента
- itemtypeid
- itemprice
- itemsize
тип элемента:
- TypeId
- имяТипа
- текущая цена
- typesize
В форме редактирования элемента есть комбинированный список typeidComboBox, связанный с item.itemtypeid и загрузкой источника данных списка элементов из источника данных itemtype.
При загрузке формы источники привязки будут установлены как.
private void Form1_Load(object sender, EventArgs e)
{
db = new dbtestEntities();
itemtypeBindingSource.DataSource = db.usertypes;
itemBindingSource.DataSource = db.users;
typeidComboBox.DataBindings.Clear();
typeidComboBox.DataBindings.Add(new System.Windows.Forms.Binding("SelectedValue", this.itemBindingSource, "itemtypeid", true));
typeidComboBox.DataSource = this.itemtypeBindingSource;
typeidComboBox.DisplayMember = "typename";
typeidComboBox.ValueMember = "typeid";
typeidComboBox.SelectionChangeCommitted += typeidComboBox_SelectionChangeCommitted;
}
Проблема возникает, когда я добавляю некоторый код, как показано ниже в событии SelectionChangeCommitted.
Код:
private void typeidComboBox_SelectionChangeCommitted(object sender, EventArgs e)
{
(itemBindingSource.Current as item).itemprice = (itemtypeBindingSource.Current as itemtype).currentprice;
}
Почему выбор Combobox отменяется и возвращается к старому значению, когда событие SelectionChangeCommitted обрабатывается так же, как в нем изменяется свойство BindingSource Combobox?
Извините мой английский.
1 ответ
Я не знаю почему. Но это решило мою проблему: DataBinding.WriteValue и ComboBox.SelectedItem.
Вот мой рабочий код.
private void typeidComboBox_SelectionChangeCommitted(object sender, EventArgs e)
{
foreach (Binding binding in (sender as ComboBox).DataBindings)
{
binding.WriteValue();
}
(itemBindingSource.Current as item).itemprice = ((sender as ComboBox).SelectedItem as itemtype).currentprice;
}