C# 如何将组合框的正确ValueMember保存到entities/db?

C# 如何将组合框的正确ValueMember保存到entities/db?,c#,winforms,combobox,valuemember,C#,Winforms,Combobox,Valuemember,如何将组合框的正确ValueMember保存到entities/db? My Winform具有从查找数据选项卡的实体获取值的组合框,如以下代码所示: private void FillComboBoxes() { chargedToComboBox.Invalidate(); ModelCS ctx = new ModelCS(); var query1 = from a in ctx.LuDatas

如何将组合框的正确ValueMember保存到entities/db? My Winform具有从查找数据选项卡的实体获取值的组合框,如以下代码所示:

    private void FillComboBoxes()
    {
        chargedToComboBox.Invalidate();
        ModelCS ctx = new ModelCS();
        var query1 = from a in ctx.LuDatas
                     where a.Category == "Charged To" && a.IsActive == true
                     select new { LuValueMember = a.LuValueMember,
                                  LuDisplayMember = a.LuDisplayMember };

        var chargedTo = query1.ToList();
        chargedToComboBox.DataSource = chargedTo;
        chargedToComboBox.DisplayMember = "LuDisplayMember";   
        chargedToComboBox.ValueMember = "LuValueMember";     

        string ch = chargedToComboBox.SelectedValue.ToString();
        MessageBox.Show(ch);      // variable ch shows the CORRECT
                                  // ValueMember
        chargedToTextBox.Text = ch;     // variable ch show the UNDESIRABLE                 
                                        // DisplayMember
        this.Refresh();

    }
在SaveChanges()上,我遇到以下错误: EntityFramework.dll中出现“System.Data.Entity.Validation.DbEntityValidationException”

为了了解发生了什么,我在表单中添加了一个文本框,并尝试将我认为是ComboBox.ValueMember的内容存储在表单中。为此,我将ComboBox.SelectedValue存储在变量(ch)中,并将此变量存储在TextBox.Text中。文本框中显示的内容。文本是组合的DisplayMember,而不是ValueMember

为了测试原因,我在代码中添加了一个MessageBox来查看'ch'的值;它显示ValueMember的对应值

为什么在MessageBox中“ch”有一个值而在TextBox中“Text”有另一个值

我只想从LuData实体中提取一个查找列表,在组合框中按名称显示选项,并在数据库中按代码存储值。

尝试以下操作:

chargedToTextBox.Text = chargedToComboBox.SelectedItem.ToString();

如果您的表单有一些“副作用”,可能您的
chargedToTextBox
有一些事件处理程序,在您将其设置为
ch
后,这些事件处理程序会更新值。您不需要使用
this.Refresh
来重新绘制整个表单。您只更改了已存在控件的值,因此无需重新绘制表单。感谢Fabio提供this.Refresh()。把它拿出来。也使用了阴影下面的线条。没有变化。将进一步研究。您能否检查整个表单中是否出现了chargedToTextBox?也许你在用它做数据绑定?您可以订阅其
TextChanged
-事件,并在事件处理程序中设置断点,以在stacktrace中查看在何种情况下谁在更改文本。感谢您的快速响应。对不起,没用。“chargedToComboBox.SelectedItem.ToString()”仍然保留DisplayMember,而不是所需的ValueMember。