Bonjour,
Je rencontre un problème et je n'arrive pas à mettre le doigt sur la solution (et je suis certain que ça ne doit pas être très complexe en plus...).
J'ai créé un controle personalisé très simple : une sorte de checkBox iPhone Like. Ses fonctions sont (pour l'intant) très basiques :
Le controle est composé d'une image qui change en fonction de la valeur de sa propriété _value (boolean).
Apperçu du controle myCheckBox :
Voici le code correspondant à ce contrôle :
J'ai testé le controle sur un formulaire et il fonctionne parfaitement (changement d'état et d'image).
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40 Public Class MyCheckBox Private _value As Boolean = False Public Sub New() ' Cet appel est requis par le concepteur. InitializeComponent() ' Ajoutez une initialisation quelconque après l'appel InitializeComponent(). SetValue(False) End Sub Public Sub New(ByVal pValue As Boolean) ' Cet appel est requis par le concepteur. InitializeComponent() ' Ajoutez une initialisation quelconque après l'appel InitializeComponent(). SetValue(pValue) End Sub Public Function GetValue() As Boolean Return Me._value End Function Public Sub SetValue(ByVal pValue As Boolean) 'Met le _value à la valeur passée en paramètres et affiche l'image correspondante Me._value = pValue If Me._value Then picChk.Image = My.Resources.chk_yes Else picChk.Image = My.Resources.chk_no End If End Sub Public Sub picChk_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles picChk.Click SetValue(Not Me._value) End Sub End Class
J'ai ensuite créé un contôle légèrement plus complexe (shiftControl) et composé en grande majorité de controles myCheckBox.
Ces contrôles myCheckBox sont ajoutés dynamiquement au controle shiftControl.
Apperçu du contrôle shiftControle :
Seulement voilà : les myCheckBox présents dans le shiftContrôle ne déclenchent pas l'évènement Click
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
27
28
29
30
31
32
33
34
35 Public Class ShiftControl Private _checks(3, 7) As MyCheckBox Public Sub New(ByVal pIdLigne As Integer, ByVal pWeekNum As Integer) ' Cet appel est requis par le concepteur. InitializeComponent() ' Ajoutez une initialisation quelconque après l'appel InitializeComponent(). 'Récupération des contrôles myCheckBox Dim tLefts() As Integer = {2, 46, 90} Dim tTops() As Integer = {39, 55, 71, 87, 103, 122, 138} For iP As Integer = 0 To 2 For iJ As Integer = 0 To 6 'Il faudra vérifier en base la valeur... Me._checks(iP, iJ) = New MyCheckBox() 'Positionnement Me._checks(iP, iJ).Top = tTops(iJ) Me._checks(iP, iJ).Left = tLefts(iP) Me._checks(iP, iJ).Visible = True 'Ajout du controle Me.Controls.Add(Me._checks(iP, iJ)) Next Next End Sub End Class
Si quelqun a une idée du pourquoi de la chose, je suis fortement interressé
Merci
Partager