Winform ComboBox绑定未按预期工作

时间:2012-08-21 20:16:03

标签: winforms binding combobox

我是VS2010和C#的新手,我正在尝试将VB6应用程序转换为.net,但是我遇到了让ComboBox正常工作的问题。我试图在“数据Binging模式”中绑定一个ComboBox,但它不起作用。当运行我的测试时,ComboBox仅显示与记录关联的整数,但它不会显示与底层ComboBox数据源关联的“显示成员”。下拉列表显示正确(绿色,蓝色,黄色),如果我从列表中选择项目并单击保存,我会收到格式异常“输入字符串格式不正确。”但我的数据似乎正确。我已经阅读并尝试了一切,但对于我的生活,我似乎无法弄清楚我做错了什么。

希望有人可以对此有所了解......

我创建了一个测试,我从我的主表数据源中选择我的“ChoiceID”字段作为组合框类型。使用图形界面我将“Data Source”设置为“choiceBindingSource”。我将“显示会员”设为“选择”。我将“Value Member”设置为“ChoiceID”。

注意:我已经以编程方式完成了相同的结果。

Master 表:ID(整数),ChoiceID(整数)

数据:

  • 1,1

  • 2,1

  • 3,2

选择表:ChoiceID(整数),选择(文本)

数据:

  • 1,绿色

  • 2,蓝

  • 3,黄色

当我运行测试时,我的组合框显示1 “绿色”。

问题

首先,为什么ComboBox在ComboBox binging中没有正确地将Master表中的“ChoiceID”绑定到Choice表的“ChoiceID”?第二,为什么当我从下拉列表中选择和设置格式异常时,我的数据似乎格式正确。

谢谢,JC

    public partial class Form2 : Form
{
    public Form2()
    {
        InitializeComponent();
    }

    private void masterBindingNavigatorSaveItem_Click(object sender, EventArgs e)
    {
        this.Validate();
        this.masterBindingSource.EndEdit();
        this.tableAdapterManager.UpdateAll(this.tabTestDataSet);

    }

    private void Form2_Load(object sender, EventArgs e)
    {
        this.choiceComboBox.DataSource = choiceBindingSource;
        this.choiceComboBox.DisplayMember = "Choice";
        this.choiceComboBox.ValueMember = "ChoiceID";

       // TODO: This line of code loads data into the 'tabTestDataSet.Master' table. You can move, or remove it, as needed.
        this.masterTableAdapter.Fill(this.tabTestDataSet.Master);
        // TODO: This line of code loads data into the 'tabTestDataSet.Choice' table. You can move, or remove it, as needed.
        this.choiceTableAdapter.Fill(this.tabTestDataSet.Choice);

    }
}

1 个答案:

答案 0 :(得分:0)

您需要一条与此类似的行(Form2.Designer.cs):

//
// choiceIdComboBox
//

//this.choiceIdComboBox.DataBindings.Add("SelectedValue", this.masterBindingSource, "choiceId", true);
this.choiceIdComboBox.DataBindings.Add("SelectedItem", this.masterBindingSource, "Choice", true);