Bonjour,

J'ai un problème avec un usercontrol. En fait, j'ai un masque de saisie sur le usercontrol "#########" (propriété Text d'un textbox). J'ai fait cette petite routine qui permet de remplacer le caractère appuyé par le masque en fonction de sa position :

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
'Insertion du caractère spécifié dans le masque de saisie
Private Function InsertChar(strText As String, strChar As String, strMaskChar As String, intPos As Integer) As String
Dim intI As Integer
Dim strResult As String
Dim strMask As String
Dim str As String
 
  For intI = 1 To Len(strText)
    If intI = intPos + 1 Then
      strResult = strResult & Mid$(strChar, 1, 1)
 
      If SearchMask(strText, strMaskChar, intI, str) Then
        intI = intI + 1
        lngPos = lngPos + 1
      End If
    Else
      strResult = strResult & Mid$(strText, intI, 1)
    End If
  Next
 
  InsertChar = strResult
End Function
L'appel de cette fonction se fait par :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
txtText.Text = InsertChar(txtText.Text, Chr(KeyAscii), strMask, txtText.SelStart)
Sauf que le résultat me donne... : 11#######

D'où provient ce "1" supplémentaire ? Est-ce le txtText.Selstart ?

En fait, je veux que le curseur se positionne sur le caractère suivant la saisie... mais est-ce cela ?

En fait, à priori, le champ ne se réinitialise pas !

Si je fait :

, j'ai :

123
Le champ précédent suivit de la nouvelle initialisation.

J'ai tenté une exécution "pas à pas", mais sans résultat !

Merci par avance.