【发布时间】:2014-02-05 14:54:13
【问题描述】:
我的 foreach 循环有问题。目的是遍历列表框中的项目,并且对于每个项目,它应该将人的属性设置为等于我将插入到人员列表中的人员对象的人员的属性。(人有一个项目,具有属性等..)。问题:它将第一个人及其项目插入到列表中,但是当涉及到必须插入的第二个人时,它将第一个人数据更改为与第二个人数据相同的数据,并插入第二个人。所以它总是插入新人,但改变我已经插入的所有旧数据也与新人相同。
private void btnOK_Click(object sender, EventArgs e)
{
bool bOK = false;
if (UC.IsEmpty(txtFirstName) || UC.IsEmpty(txtLastName) || UC.IsEmpty(txtID) || lstItemsAdded.Text == null) //Maak seker van die listItemsAdded se content... hier sal n error wees... j kan nog n else maak dat hy spesefiek toets of daar items in die lstbox is
{
UC.MB("Customer Information Missing", "Please supply enough customer information");
}
else
{
bOK = true;
}
if (bOK)
{
foreach (Item item in lstItemsAdded.Items)
{
PersonItemObject.FirstName = txtFirstName.Text;
PersonItemObject.LastName = txtLastName.Text;
PersonItemObject.ID = txtID.Text;
PersonItemObject.Email = txtEmail.Text;
PersonItemObject.Age = Convert.ToInt32(txtAge.Text);
PersonItemObject.Item.ItemCode = item.ItemCode;
PersonItemObject.Item.ItemDescription = item.ItemDescription;
PersonItemObject.Item.ItemName = item.ItemName;
PersonItemObject.Item.ItemPrice = item.ItemPrice;
它应该将 listBox 中的所有项目添加到下一条语句的列表中,并且对于每个项目,它也应该添加人员详细信息。
PersonItemsList.Add(PersonItemObject);
如果我向一个人添加了超过 1 个项目,它会将我添加到列表中的旧数据更改为与新的人员数据相同,并将新的人也插入到列表中。
}
DialogResult = DialogResult.OK;
Close();
}
}
【问题讨论】:
-
PersonItemObject定义在哪里? -
这是因为您每次都添加相同的
PersonItemObject引用,您需要在循环的每次迭代中创建一个新的PersonItemObject。
标签: c# sqlite loops foreach listbox