所以我在 Windows 窗体中创建了一个组合框。然后我进入属性并将数据源设置为数据库中的表。我将 display 和 value 成员设置为包含我想要生成为组合框项目的值的列。但是当我编译时,这组项目是空的。
我知道这个网站和互联网上有很多类似的问题,我花了几个小时尝试这些解决方案,但似乎没有任何效果。
编辑
这是windows窗体自动生成的代码。我没有编写任何影响此组合框的代码
// fieldsBindingSource2
//
this.fieldsBindingSource2.DataMember = "Fields";
this.fieldsBindingSource2.DataSource = this.tMSDataSet;
//
// FieldSelectionComboBox
//
this.FieldSelectionComboBox.BackColor = System.Drawing.SystemColors.Info;
this.FieldSelectionComboBox.DataBindings.Add(new System.Windows.Forms.Binding("SelectedItem", this.fieldsBindingSource, "Field Name", true));
this.FieldSelectionComboBox.DataBindings.Add(new System.Windows.Forms.Binding("SelectedValue", this.fieldsBindingSource, "Field Name", true));
this.FieldSelectionComboBox.DataSource = this.fieldsBindingSource2;
this.FieldSelectionComboBox.DisplayMember = "Field Name";
this.FieldSelectionComboBox.FormattingEnabled = true;
this.FieldSelectionComboBox.Location = new System.Drawing.Point(83, 3);
this.FieldSelectionComboBox.MaxLength = 50;
this.FieldSelectionComboBox.Name = "FieldSelectionComboBox";
this.FieldSelectionComboBox.Size = new System.Drawing.Size(121, 21);
this.FieldSelectionComboBox.TabIndex = 7;
this.FieldSelectionComboBox.ValueMember = "Field Name";
this.FieldSelectionComboBox.SelectedIndexChanged += new System.EventHandler(this.FieldSelectionComboBox_SelectedIndexChanged);
编辑
我不知道这是否会改变任何东西,但是组合框位于用户控件中,并且我实用地将用户控件动态添加到窗口中。
从那以后,我尝试了另一种方法。这种方式简单地从数据库中读取所有项目并将记录添加到组合框项目中。但这也不起作用。下面是我这次尝试的代码。
SqlCommand query = new SqlCommand(SqlQuery, con);
SqlDataReader Reader = query.ExecuteReader();
AutoCompleteStringCollection List = new AutoCompleteStringCollection();
while (Reader.Read())
{
try
{
List.Add(Reader.GetString(0));
}
catch (InvalidCastException)
{
int t_listItem = Reader.GetInt32(0);
List.Add(t_listItem.ToString());
}
}
NewTextBox.AutoCompleteMode = AutoCompleteMode.Suggest;
NewTextBox.AutoCompleteCustomSource = List;
然后,我在某些正在读取的字段上出现错误。错误是,SQLException 未处理,对象名称无效。
我尝试缩小无效部分的范围,无论是类型还是长度等。但我什么也没找到。数据库中的所有值都是 varchar(50) 并且都被接受并正确输入到表中。引发异常的词的示例是“Initiation”和“Trainer”,但“[First Name]”之类的词有效。
对这两种方法的任何帮助都会很棒。