Fonctions , modules , et variables
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:
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:
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:
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:
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