Bonjour,

je rencontre quelques difficultés pour faire la chose suivante :

J'ai une série de Checkbox et de label, dans des panel différents, mais liés par leur nom :
Les panels
- SMCV_Cadre1
- SMCV_Cadre2
Les checkbox
* Dans le premier panel
- Chkb_SMCV1_1
- Chkb_SMCV1_2
- Chkb_SMCV1_3
* Dans le 2ème panel
- Chkb_SMCV2_1
- Chkb_SMCV2_2
- Chkb_SMCV2_3
Les label
- lbl_SMCV1_11 (premier label lié au panel SMCV_Cadre1 et checkbox Chkb_SMCV1_1)
- lbl_SMCV1_12 (deuxième label lié au panel SMCV_Cadre1 et checkbox Chkb_SMCV1_1)
- lbl_SMCV1_21 (premier label lié au panel SMCV_Cadre1 et checkbox Chkb_SMCV1_2)
- lbl_SMCV1_22 (deuxième label lié au panel SMCV_Cadre1 et checkbox Chkb_SMCV1_2)
- lbl_SMCV1_31 (premier label lié au panel SMCV_Cadre1 et checkbox Chkb_SMCV1_3)
- lbl_SMCV1_32 (deuxième label lié au panel SMCV_Cadre1 et checkbox Chkb_SMCV1_3)
- lbl_SMCV2_11 (premier label lié au panel SMCV_Cadre2 et checkbox Chkb_SMCV2_1)
- lbl_SMCV2_12 (deuxième label lié au panel SMCV_Cadre2 et checkbox Chkb_SMCV2_1)
- etc...

Aujourd'hui j'ai 2 fonctions (1 pour chaque panel) qui fonctionnent et qui sont handle par les checkchanged des checkbox et qui vont changer la couleur de label associé

Fonction 1 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
'Private Sub CkB_SMCV1_CheckedChanged(sender As Object, e As EventArgs) Handles CkB_SMCV1_1.CheckedChanged, CkB_SMCV1_2.CheckedChanged, CkB_SMCV1_3.CheckedChanged
        Dim NumChk As String = Mid(sender.Name, 11, 1)
        Dim control As Control
        Dim lbl As Label
        For Each control In Me.SMCV_Cadre1.Controls
            If TypeOf control Is Label Then
                lbl = control
                If sender.checked = True And NumChk = Mid(lbl.Name, 11, 1) Then
                    lbl.ForeColor = Color.Red                                                
                Else
                    If sender.checked = False And NumChk = Mid(lbl.Name, 11, 1) Then
                        lbl.ForeColor = Color.Black
                    End If
                End If
            End If
        Next
    End Sub
Fonction 2:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Private Sub CkB_SMCV2_CheckedChanged(sender As Object, e As EventArgs) Handles CkB_SMCV2_1.CheckedChanged, CkB_SMCV2_2.CheckedChanged, CkB_SMCV2_3.CheckedChanged
        Dim NumChk As String = Mid(sender.Name, 11, 1)
        Dim control As Control
        Dim lbl As Label
        For Each control In Me.SMCV_Cadre2.Controls
            If TypeOf control Is Label Then
                lbl = control
                If sender.checked = True And NumChk = Mid(lbl.Name, 11, 1) Then
                    lbl.ForeColor = Color.Red                                               
                Else
                    If sender.checked = False And NumChk = Mid(lbl.Name, 11, 1) Then
                        lbl.ForeColor = Color.Black
                    End If
                End If
            End If
        Next
    End Sub
Mon souci c'est que je vais avoir de plus en plus de panel à créer avec tout autant de checkbox et de label.

Donc je peux éventuellement créer tout autant de fonctions , mais je me disais qu'il pouvait être judicieux de créer un module fonction et gérer l'appel dans ma form comme ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
Private Sub CkB_SMCV1_CheckedChanged(sender As Object, e As EventArgs) Handles CkB_SMCV1_1.CheckedChanged, CkB_SMCV1_2.CheckedChanged, CkB_SMCV1_3.CheckedChanged, CkB_SMCV1_4.CheckedChanged, CkB_SMCV1_5.CheckedChanged, CkB_SMCV1_6.CheckedChanged, CkB_SMCV1_7.CheckedChanged
        Dim NumChk As Integer = Mid(sender.Name, 11, 1)
        Dim NumCadre As Integer = Mid(sender.name, 9, 1)
        Dim NomCadre As String = Mid(sender.name, 5, 4)
        ColorNote(sender, NomCadre, NumCadre, NumChk)
End Sub

Puis J'ai créé le module suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Module Mod_Fonctions
    Public control As Control
    Public lbl As Label
    Public Chkb As CheckBox
    Public SelectCadre As String

Sub ColorNote(sender As Object, NomCadre As String, NumCadre As Integer, NumChk As Integer)

        Dim ObjetCadre As Object
        ObjetCadre.name = NomCadre & "_Cadre" & NumCadre

        For Each control In ObjetCadre.control
            If TypeOf control Is Label Then
                lbl = control
                If sender.checked = True And NumChk = Mid(lbl.Name, 11, 1) Then
                    lbl.ForeColor = Color.Red                                               'en gras : lbl.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.75!, System.Drawing.FontStyle.Bold)
                Else
                    If sender.checked = False And NumChk = Mid(lbl.Name, 11, 1) Then
                        lbl.ForeColor = Color.Black
                    End If
                End If
            End If
        Next

    End Sub
End Module

Et c'est la que je coince.

Il faut que ma fonction dans mon module détermine le nom du cadre dans lequel il va chercher les noms de label et changer leur couleur.

Auriez vous des pistes ?

Merci d'avance