Logic
Существует Form1 с FlowLayoutPanel 'flowItems', который должен быть заполнен UserControl 'UCItem'. Для заполнения flowItems используется массив. For-Loop зацикливается на массиве и создает новый UCItem, присваивает ему имя тега с номером и добавляет его в flowItem. Вся эта часть работает.
Выпуск
Я хочу менять объявленную публичную логическую переменную isChecked при каждом щелчке по вновь созданному UCItem. Для этого я добавил обработчик событий (UCItem.Click), который получает и устанавливает свойство.
Однако я не могу получить доступ к публичной логической переменной в UCItem.
Код: UC_Item.vb
Public isChecked As Boolean = False
Private Sub toggle_color()
If Me.BackColor = Color.FromArgb(24, 24, 24) Then
Me.BackColor = Color.RoyalBlue
Me.txtName.BackColor = Color.RoyalBlue
Me.txtName.ForeColor = Color.Black
Me.BackgroundImage = Nothing
isChecked = True
Else
Me.BackColor = Color.FromArgb(24, 24, 24)
Me.txtName.BackColor = Color.Black
Me.txtName.ForeColor = Color.White
Me.BackgroundImage = Image.FromFile(Application.StartupPath & "/res/UCItem_Wallpaper.png")
isChecked = False
End If
End Sub
Private Sub UC_Item_Click(sender As Object, e As EventArgs) Handles MyBase.Click
toggle_color()
End Sub
Private Sub TxtName_Click(sender As Object, e As EventArgs) Handles txtName.Click
toggle_color()
End Sub
Код: Form1.vb
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim UCItem As UC_Item
flowItems.SuspendLayout()
For i As Integer = 0 To items.Count - 1
UCItem = New UC_Item
UCItem.Tag = "UCItem" & i
UCItem.txtName.Text = items(i).ToString
flowItems.Controls.Add(UCItem)
UCItem.Show() : UCItem.Visible = True
AddHandler(UCItem.Click), AddressOf UCItem_Click
Next
flowItems.ResumeLayout()
End Sub
Private Sub UCItem_Click(sender As Object, ByVal e As EventArgs)
' -- not working part --
' If sender.isChecked = True Then
' sender.isChecked = False
' else
' sender.isChecked = True
End Sub
Пытались
Я пытался передать 'UCItem As sender.Tag', но это тоже не работает. Я не могу получить доступ к свойству .Tag и .Name отправителя в событии click.
Любая помощь приветствуется!