Создание списка параллелей - PullRequest
0 голосов
/ 25 октября 2018

Мне было поручено создать форму с 2 списками и 3 ярлыками.

Один список заполнен коллекцией походного снаряжения.Когда элемент в этом списке выбирается двойным щелчком, он копирует его во второй список.Один здесь, затем другой список с ценами будет заполнять Промежуточный итог для каждого элемента, который помещен во второй список.

Мне сказали, что я должен использовать параллельный массив, чтобы в конце концов, если элементы нужно было удалить из второго списка, он также вычел бы это из промежуточной суммы в конце.Ключом к этому приложению является наличие объекта списка в памяти параллельно вашему списку.

Например, вам нужен список цен, чтобы соответствовать списку доступных продуктов.Вам понадобится то же самое для списка купленных товаров и списка купленных цен на выбранные товары.Делая это, вы можете легко удалить элемент из заказа в зависимости от местоположения.

Если пользователь хочет удалить элемент 3 в окне списка покупок, вы также удалите элемент 3 из объекта списка покупок предметов в памяти.ТОГДА вы можете вызвать метод, который перебирает объект купленного прайс-листа, чтобы получить итоговую сумму.

Вот мой код, пока я знаю, что я близок, но, похоже, я не могу определить недостающую часть:

private void lstItems_DoubleClick(object sender, EventArgs e)
{

    ////lstItems.DataSource = lstprices;
    // validate item is selected

    // get price of selected item and add to order list
    decimal SubTotalValue = 0;
    int itemIndex = 0;
    decimal ThisPrice = 0;
    {

        try
        {
            if (lstItems.Items.Count > 0)
            {
                lstOrder.Items.Add(lstItems.SelectedItem.ToString());
                itemIndex = int.Parse(lstItems.GetItemText(lstItem.ToString()));
                ThisPrice = lstprices.IndexOf(itemIndex);
                SubTotalValue += ThisPrice;
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }


        ////lstItems.SelectedIndex = lstprices.SelectedIndex;

        // get string value of selected item and add to order listbox
        lblSubtotal.Text = lstprices.ToString();
        decimal STotal = decimal.Parse(lblSubtotal.Text.ToString());
        decimal SubTotals = STotal * (tax / 100);
        decimal GTotal = calcGrandTotal(STotal, SubTotals);

        //display totals from calculation performing functions
        lblTax.Text = SubTotals.ToString();
        lblTotal.Text = GTotal.ToString();
    }
}

Я бы предположил, что я бы сделал нечто подобное для удаления предметов.Любая помощь будет принята с благодарностью.Этот код выдает ошибку в следующих строках:

lstOrder.Items.Add(lstItems.SelectedItem.ToString());
itemIndex = int.Parse(lstItems.GetItemText(lstItem.ToString())); 

, и я не знаю, как это исправить

1 Ответ

0 голосов
/ 25 октября 2018

Я думаю, что если пользователи могут выбрать более одного элемента в lstItems, этот код должен измениться, как показано ниже

        for(int i = 0 ; i < lstItems.SelectedItems.Count ; i++)
        {
            lstOrder.Items.Add(lstItems.SelectedItems[i].ToString());
            int itemIndex = int.Parse(lstItems.GetItemText(lstItems.SelectedItems[i]);
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...