2016-02-06 107 views
0

首先不同的陣列,這裏是我的代碼:搜索根據列表框選擇

Public Class Form1 
    'Training I 
    Dim Pabumon() As String = {"Motimon", "Yokomon", "Tanemon"} 

    Private Sub Training1_SelectedIndexChanged_1(sender As System.Object, e As System.EventArgs) Handles Training1.SelectedIndexChanged 
     Dim ArrayName As String = Training1.SelectedItem 
     Dim HighSub As Integer = 0 
     Training2.Items.Clear() 

     For Each evo As String In ArrayName 

      Training2.Items.Add(ArrayName(HighSub)) 
      HighSub += 1 

     Next evo 
    End Sub 
End Class 

我的目標是從一個數組填充listbox2。我想從與listbox1中選定項目具有相同名稱的數組填充。到目前爲止,它所做的只是拼出listbox1中所選索引的文本。當我從listbox1中選擇Pabumon時,我想要的是將Motimon,Yokomon和Tanemon添加到listbox2中。

+0

你不能創造這樣的一個參考。 'ArrayName = Training1.SelectedItem'不會使'ArrayName'引用一個數組。這只是一些文字。使用If或Case語句來評估選擇。然後你可以一次添加數組(不需要循環):'Training2.Items.AddRange(Pabumon)' – Plutonix

回答

0

試試這個。這樣,當您向Training1列表添加更多項目時,只需向ListBox項目添加一個新列表,如Form1_Load所示

listBoxItems將成爲要添加到Training2的項目的列表。每個列表中的第一項是列表的名稱添加到Training1

Public Class Form1 

    Dim listBoxItems As New List(Of String()) 

這裏就是你把你的名單listBoxItems,然後在列表中添加第一個項目Training1

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load 
     listBoxItems.Add({"Pabumon", "Motimon", "Yokomon", "Tanemon"}) 
     listBoxItems.Add({"List2", "cat", "dog", "pig"}) 
     listBoxItems.Add({"List3", "cow", "Chicken", "Horse"}) 
     PopulateTraining1() 
    End Sub 

這又通過listBoxItems添加的第一個項目每個列表Training1

Private Sub PopulateTraining1() 
     For Each item As String() In listBoxItems 
      Training1.Items.Add(item(0)) 
     Next 
    End Sub 

這將清除Training2,通過listBoxItems搜索,直到找到一個匹配LISTNAME和填充Tr的aining2與列表中的其他項目。

Private Sub PopulateTraining2(listName As String) 
     Training2.Items.Clear() 
     Dim tempList As New List(Of String) 
     For Each training2List As String() In listBoxItems 
      If training2List(0) = listName Then 
       For listItems As Integer = 1 To training2List.Count - 1 
        Training2.Items.Add(training2List(listItems)) 
       Next 
      End If 
     Next 
    End Sub 

這樣可以完成與您的原代碼,但使用新的數據

Private Sub Training1_SelectedIndexChanged_1(sender As System.Object, e As System.EventArgs) Handles Training1.SelectedIndexChanged 
     Dim highSub As Integer 
     PopulateTraining2(Training1.SelectedItem.ToString) 
     highSub = Training2.Items.Count 
    End Sub 

End Class 
+0

'當你命名變量時,你應該使用駝峯大小寫(第一個字母小寫,大寫字母「我不得不說這不是必須的,而是取決於工作中的約定和規則。我知道我們公司有自己的一套約定符合我們的利益;這是一個有爭議的問題,你可能會說... – Codexer

+0

真的 - 每個公司都有自己的規則,但我只是試圖應用微軟的慣例,每個人都應該使用我認爲的一套指導意見 –

+0

我試圖保持代碼的簡短性,因爲我的Training1 listbox將會有更多的項目,我希望Training2列表框可以根據選擇進行更改,我認爲是這樣的: Training2.Items.Add(Training1.SelectedItem(Hig hSub)) 會工作。 –