Передача элементов списка по ссылке в приложении Vb.net

Я хотел бы изменить содержимое списка логических значений, поэтому я передал его методу по ссылке:

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

в методе:

    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 ответ

Решение

Тебе нужно 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
Другие вопросы по тегам