VB.NET - Problème avec le Foreground du Groupbox

Résolu
Duke49 Messages postés 552 Date d'inscription jeudi 12 octobre 2006 Statut Non membre Dernière intervention 24 janvier 2023 - 28 févr. 2011 à 10:56
Duke49 Messages postés 552 Date d'inscription jeudi 12 octobre 2006 Statut Non membre Dernière intervention 24 janvier 2023 - 30 mars 2012 à 13:42
Salut à tous !

Je voudrais comprendre pourquoi lorsque j'applique une couleur de texte à mon contrôle Groupbox celle-ci s'applique sur tous les contrôles Label enfants ?

Marci ^^

4 réponses

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
28 févr. 2011 à 11:17
Parce que par défaut, les contrôles enfants reprennent un certain nombre des propriétés (variable suivant les contrôles) du conteneur parent.
C'est ainsi que l'on peut par exemple définir la même police de caractère pour l'ensemble des contrôles en la définissant au niveau du parent le plus élevé, c'est à dire la form.

Si tu ne veux pas que ce soit le cas, il faut, après avoir défini la propriété du parent, redéfinir la propriété de l'enfant.


[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i
3
Duke49 Messages postés 552 Date d'inscription jeudi 12 octobre 2006 Statut Non membre Dernière intervention 24 janvier 2023 4
28 févr. 2011 à 12:04
Suite à tes explications très appréciées, j'ai rajouté ce code dans la partie Designer de ma form:
    Private Sub GroupBoxAllLabels()
        Dim curCTR As ControlCollection = Me.Controls
        If curCTR.Count = 0 Then Exit Sub
        Dim curGB As GroupBox
        Dim curLAB As Object
        'Si dans la liste curCTR il n'existe pas de type
        'groupebox alors Exit Sub ????
        For Each curGB In curCTR
            For Each curLAB In curGB.Controls
                If curLAB.GetType = GetType(Label) Then
                    curLAB.ForeColor = Color.DarkRed
                End If
            Next
        Next
    End Sub

    Public Sub New()

        ' Cet appel est requis par le concepteur.
        InitializeComponent()

        ' Ajoutez une initialisation quelconque après l'appel InitializeComponent().
        Me.GroupBoxAllLabels()
    End Sub


Un dernier soucis pour terminer ce sujet, j'aimerai contrôler l'existence d'un type de contrôle avant de l'énumérer avec Each.
Comment faire ?


Merci Casi !
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
28 févr. 2011 à 14:15
Réponse dans l'autre sujet


[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i
0
Duke49 Messages postés 552 Date d'inscription jeudi 12 octobre 2006 Statut Non membre Dernière intervention 24 janvier 2023 4
30 mars 2012 à 13:42
Je remet un exemple plus explicite.
LABEL1 stay red in my groupbox

<System.Diagnostics.DebuggerStepThrough()> _
    Private Sub InitializeComponent()
        Me.GroupBox1 = New System.Windows.Forms.GroupBox()
        Me.Label1 = New System.Windows.Forms.Label()
        Me.Button1 = New System.Windows.Forms.Button()
        Me.GroupBox1.SuspendLayout()
        Me.SuspendLayout()
        '
        'GroupBox1
        '
        Me.GroupBox1.ForeColor = System.Drawing.Color.DimGray
        Me.GroupBox1.Location = New System.Drawing.Point(12, 12)
        Me.GroupBox1.Name = "GroupBox1"
        Me.GroupBox1.Size = New System.Drawing.Size(237, 127)
        Me.GroupBox1.TabIndex = 0
        Me.GroupBox1.TabStop = False
        Me.GroupBox1.Text = "MASM32"
        'Move (AddControl) at the end of definitons from Me.GroupBox1
        Me.GroupBox1.Controls.Add(Me.Label1)
        Me.GroupBox1.Controls.Add(Me.Button1)
        'Add code here
        Dim ThisObject As Object = Nothing
        For Each ThisObject In Me.GroupBox1.Controls
            Select Case ThisObject.GetType
                Case GetType(Label)
                    ThisObject.ForeColor = Color.Black
                Case GetType(Button)
                    ThisObject.ForeColor = Color.Black
            End Select
        Next
        ThisObject = Nothing
        '
        'Label1
        '
        Me.Label1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
        Me.Label1.ForeColor = System.Drawing.Color.Red
        Me.Label1.Location = New System.Drawing.Point(137, 0)
        Me.Label1.Name = "Label1"
        Me.Label1.Size = New System.Drawing.Size(96, 15)
        Me.Label1.TabIndex = 2
        Me.Label1.Text = "should work ..."
...
0
Rejoignez-nous