VB.NET - Problème avec le Foreground du Groupbox [Résolu]

Messages postés
553
Date d'inscription
jeudi 12 octobre 2006
Dernière intervention
6 juin 2015
- - Dernière réponse : Duke49
Messages postés
553
Date d'inscription
jeudi 12 octobre 2006
Dernière intervention
6 juin 2015
- 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 ^^
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
Messages postés
7745
Date d'inscription
mercredi 1 septembre 2004
Dernière intervention
24 septembre 2014
3
Merci
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

Merci cs_casy 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 103 internautes ce mois-ci

Commenter la réponse de cs_casy
Messages postés
553
Date d'inscription
jeudi 12 octobre 2006
Dernière intervention
6 juin 2015
0
Merci
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 !
Commenter la réponse de Duke49
Messages postés
7745
Date d'inscription
mercredi 1 septembre 2004
Dernière intervention
24 septembre 2014
0
Merci
Réponse dans l'autre sujet


[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i
Commenter la réponse de cs_casy
Messages postés
553
Date d'inscription
jeudi 12 octobre 2006
Dernière intervention
6 juin 2015
0
Merci
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 ..."
...
Commenter la réponse de Duke49

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.