C#学习教程:如何在WindowsForms(C#)中动态添加combobox并绑定到sql数据库中表的列sql数据库中的表我的windows窗体有一个添加按钮,每次单击后都会向窗体添加一个组合框。问题是,我无法在运行时将它绑定到表列。使用现有数据绑定源在所有组合框中选择相同的值。我在C#中编码这是示例代码:ComboBoxocbNext=newComboBox();//已正确设置其余属性,问题出在数据绑定ocbNext.DataSource=this.dummysubjectBindingSource;ocbNext.DisplayMember="sub_name";ocbNext.ValueMember="sub_name";这个.Controls.Add(ocbNext);我在解决方案中添加了一个数据集,并在设计器中删除了Employees表(来自Northwind),这会自动创建employeesBindingSource。我在窗体上放了一个组合框和一个按钮,然后设置组合的DataSource和DataMember。然后我处理一些事件:privatevoidForm1_Load(objectsender,EventArgse){this.employeesTableAdapter.Fill(this.dS.Employees);}私有_i=0;privatevoidbutton1_Click(objectsender,EventArgse){ComboBoxcombo=newComboBox();combo.DataSource=this.employeesBindingSource;combo.DisplayMember=this.dS.Tables[0].Columns[++_i].ColumnName;combo.Location=newPoint(comboBox1.Location.X,comboBox1.Location.Y+comboBox1.Height*_i);这个.Controls.Add(组合);因此,每次单击时,都会在前一个组合下的表单上动态添加一个新组合。该组合还绑定到Employees表中的下一列(但没有边界检查)。如您所见,这很容易。希望这可以帮助。好的,这是代码的变体,可以帮助您解决您在对此答案的评论中提出的其他问题。它假设您有一个带有按钮的表单和一个带有员工表的数据集。单击按钮时,它会创建一个组合并用数据填充它(员工的姓名列)。每次添加投资组合时,它都会获得自己的数据副本(这对于能够一次从投资组合中删除项目很重要)。然后,每次在组合中选择一个值时,该组合将被禁用,其他组合的列表中将没有选定的值。私人整型_i=0;privatevoidbutton1_Click(objectsender,EventArgse){DataSetdataS=dS.Clone();this.employeesTableAdapter.Fill((DS.EmployeesDataTable)dataS.Tables[0]);BindingSourcebindSource=newBindingSource(dataS,"员工");ComboBox组合=新的ComboBox();combo.Name=this.dS.Tables[0].Columns[0].ColumnName+(++_i).ToString();combo.DataSource=bindSource;combo.DisplayMember=this.dS.Tables[0].Columns[1].ColumnName;//此列为员工姓名combo.Location=newPoint(button1.Location.X,button1.Location.Y+combo.Height*_i);combo.SelectedIndexChanged+=newEventHandler(comboBox_SelectedIndexChanged);这个.Controls.Add(组合);}privatevoidcomboBox_SelectedIndexChanged(objectsender,EventArgse){foreach(Controlctrlinthis.Controls){if(ctrlisComboBox&&ctrl!=sender&&ctrl.Enabled){((BindingSource)((ComboBox)ctrl).DataSource).RemoveAt(((ComboBox)sender).SelectedIndex);}}((C组合框)发件人)。启用=假;这非常接近您想要的,或者很容易适应您的期望享受并请选择一个答案作为接受的答案。谢谢!选项1:使用字符串填充组合框:this.comboBox1.Items.Add("Syed");this.comboBox1.Items.Add("Baqar");选项2:使用字符串数组填充组合框:this.comboBox1.Items.AddRange(newobject[]{"Syed","Baqar"});如果您在clickevent中创建一个新的本地ComboBox变量,应该没问题。如果您为ComboBox使用全局变量,这可能会解释您的问题。但是如果没有你如何做的示例,很难看出到底发生了什么,所以认为这只是一个粗略的猜测上面是C#学习教程:HowtodynamicallyaddacomboboxinWindowsForms(C#)andbindittosqlAll数据库中表的列所分享的内容,如果对你有用,需要详细了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
