2016-09-14 13 views
0

私はリストボックスを使用して、クラスプロジェクトのための小さな店を作りました。 私は3つの配列、アイテム(名前のための文字列を格納する)、価格(価格の小数点を格納する)、写真(アイテムの画像を格納する)を持っています。リストボックスを使用しているC#の配列の情報

http://prnt.sc/chrn6z

私はすべてがカートボタンから取り除きアイテムEXCEPT働いています。右のリストボックスから項目を削除するときは、そのリストボックス内の選択項目の価格をtotalprice変数から減算する必要があります。

私の問題は、カート(右のリストボックス)内のアイテムの価格配列10進数を取得する方法がわかりません。しかし、それは私にIndexOutOfRangeExceptionを与え、

prices[lstCart.SelectedIndex] 

は私がすることを試みた: 私はこれを試してみました。

+0

カートは別のリストボックスですか?そうであれば、アイテム名を文字列として保存していますか? –

+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

どちらもうまくいきませんでした。最初に、情報が返されずに2番目に返されたNullReference @keyur – Brenden

0

あなたが選択した製品の元のインデックスを見つけて、それをインデックスとして使用して対応する価格を取得するようなことができます。

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

string selectedProduct = lstCart.SelectedItem.ToString();これはNullReferenceを返しますか? – Brenden

+0

lstCartはショッピングカートのリストボックスの名前ですか? –

+0

はい。それは名前です – Brenden

関連する問題