KIPRE74
Messages postés120Date d'inscriptionjeudi 15 mai 2008StatutMembreDernière intervention21 novembre 2013 29 oct. 2012 à 09:55
ok ADN56
Adn56
Messages postés1172Date d'inscriptionjeudi 24 mai 2007StatutMembreDernière intervention28 septembre 20131 28 oct. 2012 à 08:37
nan ok avec If Not (IsNumeric)..exit sub, ce que je veux dire c'est que l'user ne pigera pas forcément si par exmemple j'écris 78.5 ou 78,5 ou encore 78.5k enfin bref l'affichage ne se réinitialise pas. Et je trouve que le plus simple reste de faire comme ça : (ou alors avec une masquedbox)
bonne lecture ;)
#Region "Séparateur décimal selon les regionals settings"
Private Const LOCALE_SDECIMAL As Integer = &HE
Private Declare Auto Function GetLocaleInfo Lib "kernel32" Alias "GetLocaleInfoA" (ByVal Locale As Integer, ByVal LCType As Integer, ByVal lpLCData As String, ByVal cchData As Integer) As Integer
Private Declare Auto Function GetUserDefaultLCID Lib "kernel32" () As Integer
''' <summary>
''' Renvoie le séparateur décimal correspondant au Regional Settings propres au poste client
''' </summary>
''' <value></value>
''' <returns>Caractère séparateur, type Char</returns>
''' <remarks>Propriété en lecture seule</remarks>
Public ReadOnly Property Separator() As Char
Get
'vérifié à chaque usage
Dim sSeparator As String = " "
GetLocaleInfo(GetUserDefaultLCID, LOCALE_SDECIMAL, sSeparator, 1)
Return sSeparator(0)
End Get
End Property
#End Region '(code de PCPT)
Private Sub txt_credit_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txt_credit.KeyPress, txt_debit.KeyPress
'interdit le coller
If e.KeyChar.Equals(Convert.ToChar(22)) Then
e.Handled = True
Else
Dim sAccept As String = "0123456789.," & Convert.ToChar(Keys.Back).ToString
Dim bFound As Boolean = False
For i As Integer = 0 To sAccept.Length - 1
If sAccept(i) = e.KeyChar Then
'virgule = point, ou l'inverse
If (e.KeyChar.Equals("."c) And Me.Separator.Equals(","c)) _
Or (e.KeyChar.Equals(","c) And Me.Separator.Equals("."c)) _
Then
e.KeyChar = Me.Separator
End If
bFound = True
Exit For
End If
Next
If Not bFound Then
e.Handled = True
Else
'exception quand même pour le multipoints
If DirectCast(sender, System.Windows.Forms.TextBox).Text.Contains(Me.Separator) AndAlso e.KeyChar.Equals(Me.Separator) Then
e.Handled = True
End If
End If
End If
End Sub 'gére la saisie des textbox crédit et débit (code de PCPT)
KIPRE74
Messages postés120Date d'inscriptionjeudi 15 mai 2008StatutMembreDernière intervention21 novembre 2013 27 oct. 2012 à 22:50
Si tu tapes des lettre tu auras un message d'erreur !
"Entrez une valeur numérique pour le poids" ou "Entrez une valeur numérique pour la taille"
Adn56
Messages postés1172Date d'inscriptionjeudi 24 mai 2007StatutMembreDernière intervention28 septembre 20131 27 oct. 2012 à 20:51
aie aie !
si je tape des lettres il se passe quoi ?
KIPRE74
Messages postés120Date d'inscriptionjeudi 15 mai 2008StatutMembreDernière intervention21 novembre 2013 27 oct. 2012 à 15:48
Merci à toi ALPHAS
cs_alpha5
Messages postés74Date d'inscriptionjeudi 10 août 2006StatutMembreDernière intervention24 mars 2013 26 oct. 2012 à 05:08
29 oct. 2012 à 09:55
28 oct. 2012 à 08:37
bonne lecture ;)
#Region "Séparateur décimal selon les regionals settings"
Private Const LOCALE_SDECIMAL As Integer = &HE
Private Declare Auto Function GetLocaleInfo Lib "kernel32" Alias "GetLocaleInfoA" (ByVal Locale As Integer, ByVal LCType As Integer, ByVal lpLCData As String, ByVal cchData As Integer) As Integer
Private Declare Auto Function GetUserDefaultLCID Lib "kernel32" () As Integer
''' <summary>
''' Renvoie le séparateur décimal correspondant au Regional Settings propres au poste client
''' </summary>
''' <value></value>
''' <returns>Caractère séparateur, type Char</returns>
''' <remarks>Propriété en lecture seule</remarks>
Public ReadOnly Property Separator() As Char
Get
'vérifié à chaque usage
Dim sSeparator As String = " "
GetLocaleInfo(GetUserDefaultLCID, LOCALE_SDECIMAL, sSeparator, 1)
Return sSeparator(0)
End Get
End Property
#End Region '(code de PCPT)
Private Sub txt_credit_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txt_credit.KeyPress, txt_debit.KeyPress
'interdit le coller
If e.KeyChar.Equals(Convert.ToChar(22)) Then
e.Handled = True
Else
Dim sAccept As String = "0123456789.," & Convert.ToChar(Keys.Back).ToString
Dim bFound As Boolean = False
For i As Integer = 0 To sAccept.Length - 1
If sAccept(i) = e.KeyChar Then
'virgule = point, ou l'inverse
If (e.KeyChar.Equals("."c) And Me.Separator.Equals(","c)) _
Or (e.KeyChar.Equals(","c) And Me.Separator.Equals("."c)) _
Then
e.KeyChar = Me.Separator
End If
bFound = True
Exit For
End If
Next
If Not bFound Then
e.Handled = True
Else
'exception quand même pour le multipoints
If DirectCast(sender, System.Windows.Forms.TextBox).Text.Contains(Me.Separator) AndAlso e.KeyChar.Equals(Me.Separator) Then
e.Handled = True
End If
End If
End If
End Sub 'gére la saisie des textbox crédit et débit (code de PCPT)
27 oct. 2012 à 22:50
"Entrez une valeur numérique pour le poids" ou "Entrez une valeur numérique pour la taille"
27 oct. 2012 à 20:51
si je tape des lettres il se passe quoi ?
27 oct. 2012 à 15:48
26 oct. 2012 à 05:08
excellent code