Bonjour à tous,

J'ai un problème bizarre que je rencontre pour la première fois.

J'ai une application assez complexe avec plein de fenêtre et donc, pour éviter de réinitialiser leurs contrôles à la mains à chaque ouverture, j'ai créé une petite procédure dont voici le code.

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
 
    Public Sub ResetCtl(ByRef Ctl As Control)
        Select Case Ctl.GetType.ToString
            Case "System.Windows.Forms.TextBox"
                Dim tb As TextBox = Ctl
                tb.Text = ""
            Case "System.Windows.Forms.ComboBox"
                Dim cb As ComboBox = Ctl
                cb.SelectedIndex = -1
            Case "System.Windows.Forms.MaskedTextBox"
                Dim mtb As MaskedTextBox = Ctl
                mtb.Text = ""
            Case "System.Windows.Forms.NumericUpDown"
                Dim nud As NumericUpDown = Ctl
                nud.Value = 0
            Case "System.Windows.Forms.GroupBox"
                Dim gb As GroupBox = Ctl
                For Each child As Control In gb.Controls
                    ResetCtl(child)
                Next
            Case "POS." & Ctl.Name
                Dim frm As Form = Ctl
                For Each child As Control In frm.Controls
                    ResetCtl(child)
                Next
        End Select
    End Sub
A priori, il fonctionne parfaitement. Mais j'ai un souci avec les MaskedTextBox. Lors du première affichage de la fenêtre, aucun souci, le masque est initialisé correctement. Quand j'appuie sur cancel (c'est une boite de dialogue) sans avoir encodé qqch dans le controle et qu'ensuite je réouvre cette fenêtre, c'est à ce moment que le masque du controle a disparu.

J'ai remarqué que si j'avais encodé qqch avant de cliquer sur cancel, quand je reviens, alors mon masque est bien présent.
J'ai aussi remarqué que lorsque le masque a disparu, si je vais dans le contrôle, lors de la frappe du premier caractère valide, le masque réapparait.

J'ai essayé diverses méthode pour réinitialisé le texte de ce contrôle. Ici je vous montre le code avec mtb.Text = "" mais j'ai essayé .Clear et .ResetText. Dans tous les cas, le résultat est le même. J'ai tenté de faire un refresh du contrôle après l'avoir réinitialisé mais cela n'a rien changé.

Quelqu'un aurait-il une idée de ce qu'il passe ici ?

Merci d'avance.

Griftou.