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.
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.
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
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.
Partager