1

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

希望有人能对此有所了解……</p>

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

注意:我以编程方式完成了此操作,结果相同。

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

数据:

  • 1,1

  • 2,1

  • 3,2

选择表:ChoiceID(Integer)、Choice(Text)

数据:

  • 1、绿色

  • 2、蓝色

  • 3、黄色

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

问题

首先,为什么 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);

    }
}
4

1 回答 1

0

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

//
// choiceIdComboBox
//

//this.choiceIdComboBox.DataBindings.Add("SelectedValue", this.masterBindingSource, "choiceId", true);
this.choiceIdComboBox.DataBindings.Add("SelectedItem", this.masterBindingSource, "Choice", true);
于 2013-12-10T00:50:28.010 回答