Onay kutularının listesi nasıl doldurulur? VB.NET WPF
Bir ebeveyn düğüm ve iki çocuk düğümle bir TreeView var (bir önceki soruya. VB.NET WPF NullReference Exception Bu bir takip). Düğümlerin her biri bir TreeViewItem içinde saklanan bir onay kutusu içerir. Kullanıcı, üst düğümü denetlediğinde iki çocuk düğüm onay kutusunun IsChecked = true olarak ayarlanmasını istiyorum ve kullanıcı, ana düğümün işaretini kaldırdığında iki çocuğun düğüm onay kutularının IsChecked = false olmasını istiyorum.
Çocuk düğüm onay kutularının bir listede saklandığı bir döngü var. Ana düğümün onay kutusunu işaretleyin/işaretini kaldırın, çocuk düğümü onay kutusu listesinde yinelemeli, ancak chkbox_AllChecked işlevindeki childCheckboxes listesinde sorun yaşıyorum (ana düğümün onay kutusunu işaretleyin/etkinliği kaldırın). Bazı sebeplerden dolayı liste boş. Sorun, For döngüsünde iken listeyi doldurmaya çalıştığım sorun. Neyi yanlış yaptığımı kimse anlatabilir mi? Yardım için
Public Class Question
Dim childCheckbox As CheckBox
Dim childCheckboxes As New List(Of CheckBox)
Public Sub Window_Loaded(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles MyBase.Loaded
Dim parentCheckbox = New CheckBox
Dim parentNode = New TreeViewItem
parentCheckbox.Uid = "All Sites"
AddHandler parentCheckbox.Checked, AddressOf chkbox_AllChecked
AddHandler parentCheckbox.Unchecked, AddressOf chkbox_AllUnchecked
parentCheckbox.Content = "All Sites"
parentNode.Header = parentCheckbox
Dim i As Integer = 0
Dim childCheckboxes(sites.Length) As CheckBox
For Each osite In sites
Dim childNode = New TreeViewItem
Dim childCheckbox = New CheckBox
AddHandler childCheckbox.Checked, AddressOf chkbox_Checked
AddHandler childCheckbox.Unchecked, AddressOf chkbox_Unchecked
childCheckbox.Uid = osite.SiteName.ToString
childCheckbox.Content = osite.SiteName.ToString
childNode.Header = childCheckbox
parentNode.Items.Add(childNode)
'Add all childCheckbox to an array for use by parentChildbox methods to check/uncheck all
childCheckboxes(i) = childCheckbox
i += 1
Next
TreeView1.Items.Add(parentNode)
End Sub
Private Sub chkbox_AllChecked(ByVal sender As Object, ByVal e As RoutedEventArgs)
Dim chk = DirectCast(sender, CheckBox)
'MessageBox.Show(chk.Uid.ToString)
'This part doesn't work.
For Each c In childCheckboxes
c.IsChecked = True
Next
End Sub
Private Sub chkbox_Checked(ByVal sender As Object, ByVal e As RoutedEventArgs)
Dim chk = DirectCast(sender, CheckBox)
'MessageBox.Show("Check!")
MessageBox.Show(chk.Uid.ToString)
End Sub
Private Sub chkbox_Unchecked(ByVal sender As Object, ByVal e As RoutedEventArgs)
Dim chk = DirectCast(sender, CheckBox)
'MessageBox.Show("Uncheck!")
MessageBox.Show(chk.Uid.ToString)
End Sub
End Class
Teşekkür:
İşte Kod Bu!
'List (Of CheckeckBox)' yerine 'CheckedListBox' kullanılmamalıdır mı? –