我是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);
}
}
答案 0 :(得分:0)
您需要一条与此类似的行(Form2.Designer.cs
):
//
// choiceIdComboBox
//
//this.choiceIdComboBox.DataBindings.Add("SelectedValue", this.masterBindingSource, "choiceId", true);
this.choiceIdComboBox.DataBindings.Add("SelectedItem", this.masterBindingSource, "Choice", true);