【发布时间】:2020-10-14 04:37:58
【问题描述】:
我在 ComboBox 中加载数据时遇到问题。我在 Windows 窗体中有 30 个 ComboBox。 ComboBox 的名称类似于 cmbStatus1、cmbStatus2、cmbStatus3 .... cmbStatus30。我想使用 ComboBox 中的数据库加载相同的值。我的代码是:enter code here
for (int i = 1; i <= 30; i++)
{
var comboBox = new CustomComboBox();
comboBox.Name = "cmbStatus" + i.ToString();
comboBox.DataSource = combox.FetchData_Examination_Status();
comboBox.DisplayMember = "ESTATUS";
comboBox.ValueMember = "ID";
//cmbStatus1.Refresh();
}
但是数据没有加载到这个 ComboBox。请帮忙。
【问题讨论】:
-
您忘记将新的组合框添加到现有容器中(例如,
this.Controls.Add(comboBox);)。顺便说一句,在设置DataSource之前设置DisplayMember和ValueMember。 -
combox.FetchData_Examination_Status()返回什么样的DataSource? -
谢谢吉米。实际上我想在现有的组合框中加载数据而不添加新的。
-
既然要给已有的Control添加数据,为什么还要新建呢?
var comboBox = new CustomComboBox();生成一个新对象。Name属性无关紧要。如果您将 ComboBox 控件添加到单个容器(例如 Form),则可以迭代其Controls集合,只考虑具有以Name开头的Name的 ComboBox 类型的控件:var myCombos = this.Controls.OfType<CustomComboBox>().Where(cb => cb.Name.StartsWith("cmbStatus")).ToList();。然后迭代myCombos集合。 -
for (int i = 1; i ().Where(cb => cb.Name.StartsWith("cmbStatus ")).ToList(); myCombos[i].DataSource = combox.FetchData_Examination_Status(); myCombos[i].DisplayMember = "状态"; myCombos[i].ValueMember = "ID";仍然数据未加载到 cmbStatus1、cmbStatus2、cmbStatus3 等。 @吉米
标签: c# .net winforms combobox loading