2016-09-14 1 views
0

Я использую списки для создания небольшого магазина для проекта класса. У меня есть 3 массива, элементы (хранит строку для имен), цены (сохраняет десятичное значение для цен), pics (хранит изображение для элементов).Информация из массивов в C# с использованием списка

http://prnt.sc/chrn6z

У меня все работает, КРОМЕ пункта удалить из кнопки корзины. Когда он удаляет элемент из нужного списка, ему нужно вычесть цену для выбранного элемента в этом списке из переменной totalprice.

Моя проблема заключается в том, что я не знаю, как получить цены десятичного числа для элемента в корзине (правый список). Я попытался это:

prices[lstCart.SelectedIndex] 

Я попробовал, но он дал мне IndexOutOfRangeException.

+0

Является ли тележка другой ListBox? Если да, то что вы храните, имена элементов как строки? –

+0

lhttp: //hastebin.com/kenowocefe.pl @Keyur – Brenden

ответ

0

Редактировать

Легче изменить его здесь:

private void btnRemove_Click(object sender, EventArgs e) 
{ 

    string selectedProduct = lstCart.SelectedItem.ToString(); 
    int selectedProductIndex = Array.FindIndex(items, row => selectedProduct.Contains(row)); 
    if (selectedProductIndex == -1) return; 
    decimal selectedProductPrice = prices[selectedProductIndex]; 
    totalPrice = totalPrice - selectedProductPrice; 
    MessageBox.Show(totalPrice.ToString()); 
    lstCart.Items.Remove(lstCart.SelectedItem); 
} 

Поскольку ваш selectedProduct является строка присоединились пункта и цены, то она должна удовлетворять Contains. Это немного грязный хак, но дайте мне знать, если это сработает.

+0

https://gyazo.com/13bca76ae71a3ac83830e62fce96f750 Так оно и работает, поэтому не уверен, как способ, которым вы добавили, поможет. – Brenden

+0

Отредактирован ответ в соответствии с вашим сценарием. –

+0

Ничего не работало. Сначала не возвращалась информация, а вторая возвращалась NullReference @keyur – Brenden

0

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

string selectedProduct = lstCart.SelectedItem.ToString(); 
int selectedProductIndex = Array.IndexOf(products, selectedProduct); 
double selectedProductPrice = prices[selectedProductIndex]; 
totalPrice = totalPrice - selectedProductPrice; 
+0

строка selectedProduct = lstCart.SelectedItem.ToString(); это возвращает NullReference? – Brenden

+0

lstCart - это имя вашего списка покупок в корзине? –

+0

Да. Это имя – Brenden

 Смежные вопросы

  • Нет связанных вопросов^_^