Передача элементов списка по ссылке в приложении 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 ответ
Решение
Тебе нужно 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