6

我正在尝试ComboBox用另一个类中的数组的 PART 填充一个。我必须制作一个创建客户、库存和订单的应用程序。在订单表单上,我试图分别从客户和库存类中的数组中提取客户 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();
}
4

2 回答 2

5

使用数据绑定。

给出一个现有的对象数组(在您的情况下为“客户”),定义如下:

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";

就是这样。

于 2012-12-18T05:23:33.673 回答
1
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,如果您希望每次表单激活时刷新组合框的项目,您可以这样做:

private void Form3_Activated(object sender, EventArgs e)
{
    comboBox1.Items.Clear();
    foreach (Customer cus in Customer.myCustArray)
    {
        comboBox1.Items.Add("[" + cus.customerID + "] " + cus.customerName);
    }
}
于 2012-12-18T05:35:20.237 回答