2016-12-21 54 views
0

我有項目和價格在vb.net兩個維數組:從二維數組爲組合框和文本框顯示數據

Dim items(,) As String = {{"Chicken Sand", "9000"}, {"Roast Beef Sand", "13500"}, 
       {"Salmon Sand", "13500"}, {"Tuna Sand", "11000"}, 
       {"Halloumi Sandwich", "7000"}, {"Ham & Cheese Sand", "8000"}, 
       {"Water", "1500"}, {"Soft Drink", "2500"}, 
       {"Fresh Lemonade", "3000"}, {"Fresh Orange", "3500"}} 

我想從這個數組 裝滿物品的組合框當選擇組合框中的每個項目時,我希望價格將顯示在特定於價格的文本框中。 我伸手:

For row = 0 To items.GetUpperBound(0) 
    cbitem.Items.Add(items(row, 0)) 
Next` 
+0

您可以使用一個實用程序類或匿名類型來創建一個數據源作爲鏈接的答案顯示 – Plutonix

+0

@Plutonix我沒不明白 –

+0

如果你想顯示一個東西給用戶和收集別的東西,像一個值,你應該使用一個數據源。它可以是一個數據表或列表(T)或一個匿名類型列表。鏈接的帖子顯示瞭如何:http://stackoverflow.com/a/39024484/1070452它也將讓你存儲價格而不是文本 – Plutonix

回答

2

this is a homework and we were asked to fill the combobox with items by a two dimentional array

這不是做這與使用數據源的好方法:

實際上,你不能把你的陣列到ComboBox因爲Items是一個集合,不是一個多維數組。但是你可以用它來查找選擇的內容。要確保你的數組形式級別範圍:

Option Strict On 
Public Class MenuFrm 

    Private items(,) As String = {{"Chicken Sand", "9000"}, {"Roast Beef Sand", "13500"}, 
        {"Salmon Sand", "13500"}, {"Tuna Sand", "11000"}, 
        {"Halloumi Sandwich", "7000"}, {"Ham & Cheese Sand", "8000"}, 
        {"Water", "1500"}, {"Soft Drink", "2500"}, 
        {"Fresh Lemonade", "3000"}, {"Fresh Orange", "3500"}} 

後來,也許在窗體加載,名稱填寫CBO:

For row = 0 To items.GetUpperBound(0) 
    cbox1.Items.Add(items(row, 0)) 
Next 

現在,當他們撿東西查找字符串價格:

Private Sub cbox1_SelectedIndexChanged1(sender As Object, 
     e As EventArgs) Handles cbox1.SelectedIndexChanged 
    If cbox1.SelectedIndex < 0 Then Return 
    Dim price = Convert.ToDecimal(items(cbox1.SelectedIndex, 1)) 
End Sub 

一個適當DataSource將價格作爲存儲數字,保持與菜單項的價格,使這一切在SelectedValueChanged可用。

+0

非常感謝你使用@plutonix第二陣列,因爲這是從我這裏問的。並感謝DataSource更好的方式。 –