C# 在不崩溃的情况下删除数组值
我正在做一个订购界面,我被困在删除点 e、 g: 开始时,我将单击“添加到订单”按钮,该按钮将食品价格和数量相乘,然后存储到一个数组中C# 在不崩溃的情况下删除数组值,c#,C#,我正在做一个订购界面,我被困在删除点 e、 g: 开始时,我将单击“添加到订单”按钮,该按钮将食品价格和数量相乘,然后存储到一个数组中 private int c = 0; private decimal[] ordersarray = new decimal[10]; List<decimal> items = new List<decimal>(); private void fconfirmbutton_Click(object sender, EventArgs
private int c = 0;
private decimal[] ordersarray = new decimal[10];
List<decimal> items = new List<decimal>();
private void fconfirmbutton_Click(object sender, EventArgs e)
{
int fquantity;
if (int.TryParse(fquantitytextbox.Text, out fquantity))
{
fquantity = int.Parse(fquantitytextbox.Text);
if (fquantity.ToString() != "" + 0)
{
decimal mulxprice, quan, total;
mulxprice = decimal.Parse(fpricetextbox.Text);
quan = int.Parse(fquantitytextbox.Text);
total = mulxprice * quan;
cartlistbox.Items.Add(foodnametextbox.Text + " x" + quan.ToString() + " ($" + total.ToString() + ") ");
subtotalbox.Text = total.ToString();
decimal b;
try
{
if (decimal.TryParse(subtotalbox.Text, out b))
{
ordersarray[c] = b;
c++;
subtotalbox.Text = "";
}
}
catch
{
MessageBox.Show("Sorry, the order system can only takes up to 10 orders at a time only.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
fquantitytextbox.Clear();
fquantitytextbox.Focus();
}
例如,我可能会订购2件物品,例如:
因此,我试图通过从列表框中选择项“b”并单击“删除”按钮来删除项“b”,但它总是以“索引超出数组边界”结束。
所以我知道这是在完全删除数组值后数组崩溃的一种情况,但我不知道如何
很抱歉,这可能会让人困惑,但我希望你理解我可能需要什么 尝试更改此选项:
cartlistbox.Items.Remove(cartlistbox.SelectedItem);
为此:
cartlistbox.Items.Remove(cartlistbox.SelectedIndex);
您想知道它抛出错误的原因还是阻止错误的解决方案?为什么将所选项目设置为0
cartlistbox.SelectedItem=0是的,我想知道解决这个问题的方法。基本上,在删除数组中存储的值后,它会崩溃。那么,我应该做些什么来防止这种情况发生呢?创建一个新数组?或者是否可以将该特定的选定值再次替换为“0”,以便在数组中存储另一个值。@很抱歉,代码中不需要该值,因此我现在将其删除,但仍然没有找到解决方法。请查看该方法。它将要删除的对象
作为参数。不是索引取索引
cartlistbox.Items.Remove(cartlistbox.SelectedIndex);