Как сделать группу контролов членами коллекции другого контрола? - Visual Basic .NET

Узнай цену своей работы

Формулировка задачи:

Всем здравствуйте. На форме есть группа Label с различными именами и PictureBox. Задача сделать все Label членами коллекции PictureВox. Если сделать так, то всё работает как надо
Листинг программы
  1. Private Sub frmParam_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  2. lblHour.Parent = PictureBox1
  3. lblTP1.Parent = PictureBox1
  4. lblTO1.Parent = PictureBox1
  5. lblPP1.Parent = PictureBox1
  6. lblPO1.Parent = PictureBox1
  7. lblGP1.Parent = PictureBox1
  8. lblGO1.Parent = PictureBox1
  9. lblTP2.Parent = PictureBox1
  10. lblTO2.Parent = PictureBox1
  11. lblPP2.Parent = PictureBox1
  12. lblPO2.Parent = PictureBox1
  13. lblGP2.Parent = PictureBox1
  14. lblGO2.Parent = PictureBox1
  15. lblTP3.Parent = PictureBox1
  16. lblTO3.Parent = PictureBox1
  17. lblPP3.Parent = PictureBox1
  18. lblPO3.Parent = PictureBox1
  19. lblGP3.Parent = PictureBox1
  20. lblGO3.Parent = PictureBox1
  21. lblGPS.Parent = PictureBox1
  22. lblGOS.Parent = PictureBox1
  23. lblGPP.Parent = PictureBox1
  24. lblPW.Parent = PictureBox1
  25. lblGWS.Parent = PictureBox1
  26. lblHB1.Parent = PictureBox1
  27. lblHB4.Parent = PictureBox1
  28. For Each lbl As Control In PictureBox1.Controls
  29. If TypeOf lbl Is Label Then
  30. lbl.BackColor = Color.Green
  31. End If
  32. Next
Но это громоздко. А вот если сделать так, то часть меток не становится членами коллекции PictureBox. Почему?
Листинг программы
  1. Private Sub frmParam_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  2. For Each lbl As Control In Me.Controls
  3. If TypeOf lbl Is Label Then
  4. lbl.Parent = PictureBox1
  5. End If
  6. Next
  7. For Each lbl As Control In PictureBox1.Controls
  8. If TypeOf lbl Is Label Then
  9. lbl.BackColor = Color.Green
  10. End If
  11. Next
SetParent.rar

Решение задачи: «Как сделать группу контролов членами коллекции другого контрола?»

textual
Листинг программы
  1.         Dim LabList As New List(Of Label)   ' список Label формы
  2.         For Each lbl As Control In Me.Controls
  3.             If TypeOf lbl Is Label Then LabList.Add(CType(lbl, Label))
  4.         Next
  5.  
  6.         LabList.ForEach(Sub(L As Label) L.Parent = PictureBox1)
  7.  
  8.         For Each lbl As Control In PictureBox1.Controls
  9.             If TypeOf lbl Is Label Then
  10.                 lbl.BackColor = Color.Green
  11.             End If
  12.         Next

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.714 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы