4

使用 C# Entity Framework 对象如下 2

物品:

  • 项目名
  • itemtypeid
  • 商品价格
  • 项目大小

物品种类:

  • 类型标识
  • 类型名称
  • 时价
  • 排版

在项目编辑表单上,有一个名为 typeidComboBox 的组合框绑定到 item.itemtypeid 和从 itemtype 数据源加载的项目列表数据源。

当 Form Loads Binding Sources 会这样设置。

    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;
    }

当 SelectionChangeCommitted 事件像 Combobox 的 BindingSource 属性在其中发生更改时,为什么 Combobox 选择取消并返回到旧值?

对不起我的英语。

4

1 回答 1

2

我不知道为什么。但它解决了我的问题: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;
}
于 2012-11-19T08:15:49.537 回答