我正在尝试使用另一个类中的数组的PART填充ComboBox
。我必须创建一个创建客户,库存和订单的应用程序。在订单上,我试图分别从客户和库存类中的数组中提取客户ID和库存ID信息。这些数组中包含多种类型的信息:客户ID,名称,地址,状态,邮政编码等;库存ID,名称,折扣价值和价格。
这就是我的数组设置如下:
public static Customer[] myCustArray = new Customer[100];
public string customerID;
public string customerName;
public string customerAddress;
public string customerState;
public int customerZip;
public int customerAge;
public int totalOrdered;
这就是我的组合框设置如下:
public void custIDComboBox_SelectedIndexChanged(object sender, EventArgs e)
{
custIDComboBox.Items.AddRange(Customer.myCustArray);
custIDComboBox.DataSource = Customer.getAllCustomers();
}
答案 0 :(得分:3)
使用数据绑定。
给出一个现有的对象数组(在您的情况下为“Customers”),如下所示:
public static Customer[] myCustArray = new Customer[100];
将数组定义为数据源,如下所示:
BindingSource theBindingSource = new BindingSource();
theBindingSource.DataSource = myCustArray;
myComboBox.DataSource = bindingSource.DataSource;
然后你可以像这样设置每个项目的标签和值:
//That should be a string represeting the name of the customer object property.
myComboBox.DisplayMember = "customerName";
myComboBox.ValueMember = "customerID";
就是这样。
答案 1 :(得分:0)
Customer.myCustArray[0] = new Customer { customerID = "1", customerName = "Jane" };
Customer.myCustArray[1] = new Customer { customerID = "2", customerName = "Jack" };
上面你不需要两行,我添加它们来查看输出,下面的代码生成ComboBox项:
foreach (Customer cus in Customer.myCustArray)
{
comboBox1.Items.Add("[" + cus.customerID + "] " + cus.customerName);
}
您可以将此代码复制到相应的事件中,例如它可以是FormLoad
,如果您希望每次激活表单时刷新ComboBox的项目,都可以执行此操作:
private void Form3_Activated(object sender, EventArgs e)
{
comboBox1.Items.Clear();
foreach (Customer cus in Customer.myCustArray)
{
comboBox1.Items.Add("[" + cus.customerID + "] " + cus.customerName);
}
}