我的foreach循環出現問題。 prupose是循環訪問列表框中的項目,對於每個項目,都應該設置該人員的屬性等於該人員的屬性等於我將插入到人員列表中的一個人員對象(該人員有一個項目,與物業等..)。問題:它將第一個包含它的項目的人插入列表中,但是當涉及到要插入的第二個人時,它會將第一個人數據更改爲與第二個人數據相同的數據,並插入第二個人。所以它總是插入新的人,但是改變我插入的所有舊數據也與新人相同。我的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;
它應該在列表框中的所有項目添加到列表中的下一條語句,併爲每個項目應該加人詳細介紹了。
PersonItemsList.Add(PersonItemObject);
如果我增加了超過1項,它改變了我,我在列表中添加是一樣的,然後新的人的數據舊數據,並插入一個新的人進入榜單也一個人。
}
DialogResult = DialogResult.OK;
Close();
}
}
'PersonItemObject'定義在哪裏? –
這是因爲您每次添加相同的'PersonItemObject'參考,您需要在循環的每次迭代中創建一個新的'PersonItemObject'。 – James