Как я могу изменить ForeColor всех меток в форме? - PullRequest
0 голосов
/ 24 февраля 2011

Можно ли изменить ForeColor всех меток на форме во время выполнения, включая форму, которую еще предстоит вызвать?Так что все ярлыки имеют одинаковый цвет по всему приложению.

Ответы [ 2 ]

4 голосов
/ 24 февраля 2011

Вам просто нужно перебрать все элементы управления Form в поисках меток. Элементы управления могут иметь дочерние элементы управления, поэтому вы хотите сделать это рекурсивно:

Private Sub UpdateLabelFG(ByVal controls As ControlCollection, ByVal fgColor As Color)
    If controls Is Nothing Then Return
    For Each C As Control In controls
        If TypeOf C Is Label Then DirectCast(C, Label).ForeColor = fgColor
        If C.HasChildren Then UpdateLabelFG(C.Controls, fgColor)
    Next
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    UpdateLabelFG(Me.Controls, Color.Red)
End Sub
1 голос
/ 24 февраля 2011

Я не думаю, что это так тривиально, как вы думаете.Достаточно просто перебрать все элементы управления в определенной форме и установить цвет.Но если у вас есть несколько открытых форм и задайте передний цвет в одной форме;получение всех форм для изменения цвета будет проблемой.

Я бы сказал, создайте свой собственный класс Form, который наследуется от System.Windows.Forms.Form;используйте эту новую форму во всем приложении.Добавьте частную подпрограмму, которая принимает цвет и проходит по элементам управления формы, устанавливая передний цвет метки на желаемый цвет (отличный пример этого см. В публикации Криса Хааса).

Затем создайте одноцветный класс ColorManager.Приложение в целом будет иметь только один цвет переднего плана.ColorManager должен иметь открытое событие, которое вызывается при изменении цвета, и функцию 'SetColor' (или свойство, как вам нравится), который вы будете использовать для установки цвета.

Затем, возвращаясь к вашему классу формыВы добавляете обработчик события для события смены цвета ColorManager.

Теперь любая форма может установить передний цвет всего приложения, и все открытые формы будут реагировать на это событие и устанавливать свой цвет соответствующим образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...