C# 使用c删除项目时自动计算listview中项目的总值#
我正在使用listview作为购物车。我需要知道如何重新计算购物车的总价值时,我删除一个项目 这是我添加到listview的代码C# 使用c删除项目时自动计算listview中项目的总值#,c#,listview,C#,Listview,我正在使用listview作为购物车。我需要知道如何重新计算购物车的总价值时,我删除一个项目 这是我添加到listview的代码 private void btnACart_Click(object sender, EventArgs e) { int value = 0; for (int i = 0; i < lvCart.Items.Count; i++) { value += int.Parse(lvCart.Items[i].SubIte
private void btnACart_Click(object sender, EventArgs e)
{
int value = 0;
for (int i = 0; i < lvCart.Items.Count; i++)
{
value += int.Parse(lvCart.Items[i].SubItems[1].Text);
}
rtbTcost.Text = value.ToString();
}
我想重新计算删除项目后项目的总值。我该怎么做?您不能在foreach中更改相同的列表
foreach (ListViewItem item in lvCart.Items)
{
if (lvCart.Items[0].Selected)
{
lvCart.Items.Remove(lvCart.SelectedItems[0]);
total += Convert.ToInt32(item.SubItems[1].Text);
}
}
解决方案是创建重复列表并对其进行更改:
var newList = lvCart;
foreach (ListViewItem item in lvCart.Items)
{
if (lvCart.Items[0].Selected)
{
newList.Items.Remove(lvCart.SelectedItems[0]);
total += Convert.ToInt32(item.SubItems[1].Text);
}
}
像这样的
在表单级别上声明
private int _listTotal;
添加-我认为您在这里遇到了一些问题,因为您应该在添加项目时将其添加到总数中
private void btnACart_Click(object sender, EventArgs e)
{
int value = 0;
for (int i = 0; i < lvCart.Items.Count; i++)
{
value += int.Parse(lvCart.Items[i].SubItems[1].Text);
}
// how about lvCart.Items.Add(<myVal>)...???
_listTotal += value; // and here add myVal
rtbTcost.Text = _listTotal.ToString();
}
未测试,但应能正常工作请您澄清您要求的总数。对我来说,在阅读问题时,它没有打开。我希望listview充当购物车。我想知道每件商品的总价。谢谢你的帮助,先生。不是很准确,但效果很好。对不起,先生,关于这个程序。您给我的代码中的问题是,每次我删除该项时,它删除的值都是添加到listview@T.S.@bluffer中的第一个值,我刚刚测试了它-它工作正常。我有
\u l.MultiSelect=true的列表视图代码>。我添加了10个项目,选择了其中的3个,例如项目2、5、8。通过'while(_.SelectedItems.Count>0){u.Items.Remove(_.SelectedItems[0]);}'我看没有问题。在删除之前,您需要实际单击并选择该项目。再次感谢先生,哈哈哈。我尝试使用for循环并组合了您的代码。但是现在很好,非常感谢!!!!我警告过你-不要使用for循环来改变集合!!:o) )
private void btnRemoveItem_Click(object sender, EventArgs e)
{
int total = 0;
foreach (ListViewItem item in lvCart.Items)
{
if (lvCart.Items[0].Selected)
{
total+=(int)lvCart.SelectedItems[0].SubItems[1].Text;//Add to total while romving
lvCart.Items.Remove(lvCart.SelectedItems[0]);
//total += Convert.ToInt32(item.SubItems[1].Text);
}
}
rtbTcost.Text = total.ToString();
}
private void btnRemoveItem_Click(object sender, EventArgs e)
{
int totalRemoved = 0;
while (lvCart.SelectedItems.Count > 0)
{
totalRemoved += Convert.ToInt32(lvCart.SelectedItems[0].SubItems[1].Text);
lvCart.Items.Remove(lvCart.SelectedItems[0]);
}
_listTotal -= totalRemoved;
rtbTcost.Text = _listTotal.ToString
}
private void btnRemoveItem_Click(object sender, EventArgs e)
{
int total = 0;
foreach (ListViewItem item in lvCart.Items)
{
if (lvCart.Items[0].Selected)
{
total+=(int)lvCart.SelectedItems[0].SubItems[1].Text;//Add to total while romving
lvCart.Items.Remove(lvCart.SelectedItems[0]);
//total += Convert.ToInt32(item.SubItems[1].Text);
}
}
rtbTcost.Text = total.ToString();
}