Mam wcześniej zaznaczone pole CheckedListBox. Chcę zapętlić z "dla każdego/następnego" poprzez wszystkie elementy w CheckedListBox i zrobić dużo "stuff" z każdym elementem iteracji checklistbox.Dla każdego <item> w CheckedListBox. <item> zwraca jako Object, a nie jako Control
przykładowy kod:
For Each item In CheckedListBox1.Items
If item.Checked = True Then
'do stuff like
item.BackColor = Color.Blue
Else
'do other stuff
item.BackColor = Color.Brown
End If
Next
problemem jest to, że jest 'Object' typ, a nie 'Kontrola' typ. Jeśli wymuszam iterację var As CheckBox, zgłaszany jest wyjątek InvalidCastException, który mówi, że typ "System.String" nie może być powiązany z typem "System.Windows.Forms.CheckBox"
Wiem, że mogę z łatwością obejść to, ale Chcę użyć a dla każdej/następnej pętli, ponieważ mam dużo kodu w tej pętli (i With nie może być używana) i zawsze poiting bezpośrednio do obiektu jest czymś, czego chciałbym uniknąć i naprawdę potrzebuję kodu, aby być Tak proste, jak to możliwe.
Właściwie spędziłem jedno popołudnie szukając tego, ale nie mogłem znaleźć żadnej odpowiedzi.
Tak, ale CheckedListBox nie jest wystarczająco wydajny dla Ciebie. – SLaks
Niewiele, żeby to rozgryźć. Obiekt, który otrzymujesz, to rzeczywisty obiekt dodany do listy (w twoim przypadku ciąg znaków, który uważam). Nie "element listy" stworzony dla niego. Wizualne dostosowanie poszczególnych elementów wymagałoby zakodowania listbox-a sporządzonego przez właściciela, co byłoby zupełnie inną lekcją. – Ishmaeel