删除数组值而不会崩溃

时间:2018-01-11 18:44:36

标签: c#

我正在做一个订购界面,我在删除时陷入困境。

例如:order interface

在开始时,我将点击“添加到订单”按钮,该按钮将食品价格和数量相乘,然后存储到数组中。

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();
            }

将其存储到cartlistbox和ordersarray后,我尝试使用以下命令将其删除:

编辑:

 private void deletebutton_Click(object sender, EventArgs e)
    {
        try
        {
            if (this.cartlistbox.SelectedIndex >= 0)
            {
                cartlistbox.Items.Remove(cartlistbox.SelectedItem);
                cartlistbox.Refresh();
            }
            else
            {
                MessageBox.Show("Error, please select an item to delete.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
例如,我可能会订购2件商品,例如:

listbox example

因此我尝试删除项目'b',方法是从列表框中选择它并单击“删除”按钮,但它始终以“索引超出数组范围”结束。 所以我明白,这是在完全删除数组值后崩溃的数组,但我不知道如何。

对不起,因为这可能令人困惑,但我希望你明白我可能需要什么。

1 个答案:

答案 0 :(得分:-3)

尝试改变这一点:

cartlistbox.Items.Remove(cartlistbox.SelectedItem);

到此:

cartlistbox.Items.Remove(cartlistbox.SelectedIndex);