【问题标题】:How to load values in ComboBox dynamically using C# windows application如何使用 C# windows 应用程序动态加载 ComboBox 中的值
【发布时间】: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 之前设置 DisplayMemberValueMember
  • combox.FetchData_Examination_Status()返回什么样的DataSource?
  • 谢谢吉米。实际上我想在现有的组合框中加载数据而不添加新的。
  • 既然要给已有的Control添加数据,为什么还要新建呢? var comboBox = new CustomComboBox(); 生成一个新对象。 Name 属性无关紧要。如果您将 ComboBox 控件添加到单个容器(例如 Form),则可以迭代其 Controls 集合,只考虑具有以 Name 开头的 Name 的 ComboBox 类型的控件:var myCombos = this.Controls.OfType&lt;CustomComboBox&gt;().Where(cb =&gt; 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


【解决方案1】:

在您的代码中,您正在创建新的组合框,而不是使用表单上的组合框。所以去掉这部分代码

 var comboBox = new CustomComboBox(); 

并使用

yourComboBoxName.DataSource = combox.FetchData_Examination_Status();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多