2014-10-30 62 views
1

我想改變布爾列表的內容,所以我通過它的方法通過引用這樣:按引用傳遞列表的項目Vb.net應用程序內

Private Sub rgProcS9SelectionMethod(ByRef ComposantsVisibility As List(Of Boolean), ByVal SelectedIndex As Integer) 
      ComposantsVisibility.Clear() 
      If SelectedIndex = 0 Then 
       For index As Integer = 0 To 1 
        ComposantsVisibility.Add(False) 
       Next 
      Else 
       For index As Integer = 0 To 11 
        ComposantsVisibility.Add(True) 
       Next 
      End IF 
End Sub 

列表的內容值改變,但標籤(LBL1,LBL2)的可見性仍然是相同的。

  1. 所以,我需要知道爲什麼項目不通過引用傳遞?
  2. 我如何解決我的代碼
+1

因爲列表內容BOOLS沒有標籤。事實上,你存儲了剛剛發生的Bool值來源於某些標籤,並不會創建與標籤的鏈接。你的列表包含bool值而不是標籤對象 – Plutonix 2014-10-30 14:11:34

+0

爲什麼你甚至期望標籤僅僅因爲你將一個列表中的'bool'從'false'改爲'true'而切換其可見性?這與您希望您在啓動割草機時啓動車輛的原因相同,因爲兩者都以燃油運行。 – 2014-10-30 14:19:37

回答

1

你需要two名單。一個用於知名度和一個用於標籤

Dim liste As New List(Of Boolean) 
Dim listeL As New List(Of Label) 
liste.Add(lbl1.Visible) 
liste.Add(lbl2.Visible) 
listeL.Add(lbl1) 
listeL.Add(lbl2) 
RaiseEvent rgProcS9Selection(liste, listeL, SelectedIndex) 

並在rgProcS9SelectionMethod結束:

Private Sub rgProcS9SelectionMethod(ByVal ComposantsVisibility As List(Of Boolean), ByVal ComposantsLabels As List(Of Label), ByVal SelectedIndex As Integer) 
    ... 
    ... 
    For i = 0 To ComposantsLabels.Count - 1 
     ComposantsLabels(i).Visible = ComposantsVisibility(i) 
    Next 
End Sub 
相關問題