Attention, Emilie est sur de l'ASP en ce moment et la classe présentées sur Code Soruce hérite d'une classe Winform....
Inherits System.Windows.Forms.TextBox
Je pense qu'il serrait préférable de regarder du côté du ToolKit Ajax : http://www.asp.net/AJAX/AjaxControlToolkit/Samples/Default.aspx
Une foie testé, en général c'est adopté ;) -- Jérémy JEANSON MCP http://www.jjeanson.fr
Jacquouille14
Emilie a écrit :
Bonjour
Est-il possible de limiter les décimales dans une textbox ?
j'ai un nombre qui est 13,402 et je vodrais afficher 13,40 ?, dans mon asp:textbox j'ai ajouté FormatString="{0:c}" et cela ne change rien
Emilie
Bonjour, Oui c'est possible. On peut même faire qu'il n'y ait qu'une seule virgule possible dans le nombre, mettre des 0 (zéros) avant la virgule si elle est saisie sans rien devant ... Il vous faut définir vos besoins. Par exemple 13.402 est arrondi à 13.40 mais 13.406 est-il arrondi à 13.41 ?
Un exemple avec la classe microsoft.visualbasic en utilisant le point, le texte est formaté en quittant la textbox: Public Function Deci(x$)'2 decimales Dim qS$: qs$=x$ If InStr(x$,",") <> 0'remplacer , par . x$=Microsoft.VisualBasic.Left(x$,InStr(x$,",") - 1) & "." If Microsoft.VisualBasic.Len(qs$) > InStr(x$,".")'chiffres apres x$=x$ & Microsoft.VisualBasic.Right(qs$,Len(qs$) - InStr(x$,".")) end if End If If InStr(x$,".")=0 or x$="" then: x$=x$ & ".": End If'manque . x$=IIf(x$=".","0.00",x$ & "00") If Microsoft.VisualBasic.Left(x$,1)="." then: x$="0" & x$: End If deci=Microsoft.VisualBasic.Left(x$,InStr(x$,".") + 2) End Function Appel de la fonction: textbox1.textÞci(textbox1.text)
Pour compléter la fonction, celle-ci arrondi à 2 décimales en analysant au dela des 2 décimales: Private Function Ajust(XS#) As double 'arrondi des resultats X$=CStr(XS#): X$ = IIf(InStr(X$, ".") = 0, X$ & ".0000", X$ & "0000") Ajust = val(deci(X$)) If Val(Mid$(X$, InStr(X$, ".") + 3, 2)) > 49 Ajust = deci(CStr(Ajust) + val("0.01"))'appel de la fonction Deci End If End Function
Et pendant la saisie dans la textbox (appelée ici T21) en limitant à 2 les décimales, en n'autorisant que le point et les chiffres: Private Sub T21_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles T21.KeyDown If e.KeyValue<>46 and e.KeyValue<>8 and e.KeyValue<>39 and e.KeyValue<>37 If (e.KeyValue0 and instr(T21.text,".")<>0) or e.KeyValue8 e.SuppressKeyPress = -1 elseIf (Len(T21.Text)=InStr(T21.Text,".") + 2 and InStr(T21.Text,".")<>0) or ((e.KeyValue<96 or e.KeyValue>105) and e.KeyValue<>110) e.SuppressKeyPress = -1 End If end if End Sub
Bonne programmation. -- Jacques dit Jacquouille
Emilie a écrit :
Bonjour
Est-il possible de limiter les décimales dans une textbox ?
j'ai un nombre qui est 13,402 et je vodrais afficher 13,40 ?,
dans mon asp:textbox j'ai ajouté FormatString="{0:c}"
et cela ne change rien
Emilie
Bonjour,
Oui c'est possible. On peut même faire qu'il n'y ait qu'une
seule virgule possible dans le nombre, mettre des 0 (zéros)
avant la virgule si elle est saisie sans rien devant ...
Il vous faut définir vos besoins. Par exemple 13.402 est
arrondi à 13.40 mais 13.406 est-il arrondi à 13.41 ?
Un exemple avec la classe microsoft.visualbasic en utilisant le point,
le texte est formaté en quittant la textbox:
Public Function Deci(x$)'2 decimales
Dim qS$: qs$=x$
If InStr(x$,",") <> 0'remplacer , par .
x$=Microsoft.VisualBasic.Left(x$,InStr(x$,",") - 1) & "."
If Microsoft.VisualBasic.Len(qs$) > InStr(x$,".")'chiffres apres
x$=x$ & Microsoft.VisualBasic.Right(qs$,Len(qs$) - InStr(x$,"."))
end if
End If
If InStr(x$,".")=0 or x$="" then: x$=x$ & ".": End If'manque .
x$=IIf(x$=".","0.00",x$ & "00")
If Microsoft.VisualBasic.Left(x$,1)="." then: x$="0" & x$: End If
deci=Microsoft.VisualBasic.Left(x$,InStr(x$,".") + 2)
End Function
Appel de la fonction: textbox1.textÞci(textbox1.text)
Pour compléter la fonction, celle-ci arrondi à 2 décimales
en analysant au dela des 2 décimales:
Private Function Ajust(XS#) As double 'arrondi des resultats
X$=CStr(XS#): X$ = IIf(InStr(X$, ".") = 0, X$ & ".0000", X$ & "0000")
Ajust = val(deci(X$))
If Val(Mid$(X$, InStr(X$, ".") + 3, 2)) > 49
Ajust = deci(CStr(Ajust) + val("0.01"))'appel de la fonction Deci
End If
End Function
Et pendant la saisie dans la textbox (appelée ici T21) en limitant
à 2 les décimales, en n'autorisant que le point et les chiffres:
Private Sub T21_KeyDown(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyEventArgs) Handles T21.KeyDown
If e.KeyValue<>46 and e.KeyValue<>8 and e.KeyValue<>39 and e.KeyValue<>37
If (e.KeyValue0 and instr(T21.text,".")<>0) or e.KeyValue8
e.SuppressKeyPress = -1
elseIf (Len(T21.Text)=InStr(T21.Text,".") + 2 and
InStr(T21.Text,".")<>0) or ((e.KeyValue<96 or e.KeyValue>105) and
e.KeyValue<>110)
e.SuppressKeyPress = -1
End If
end if
End Sub
Est-il possible de limiter les décimales dans une textbox ?
j'ai un nombre qui est 13,402 et je vodrais afficher 13,40 ?, dans mon asp:textbox j'ai ajouté FormatString="{0:c}" et cela ne change rien
Emilie
Bonjour, Oui c'est possible. On peut même faire qu'il n'y ait qu'une seule virgule possible dans le nombre, mettre des 0 (zéros) avant la virgule si elle est saisie sans rien devant ... Il vous faut définir vos besoins. Par exemple 13.402 est arrondi à 13.40 mais 13.406 est-il arrondi à 13.41 ?
Un exemple avec la classe microsoft.visualbasic en utilisant le point, le texte est formaté en quittant la textbox: Public Function Deci(x$)'2 decimales Dim qS$: qs$=x$ If InStr(x$,",") <> 0'remplacer , par . x$=Microsoft.VisualBasic.Left(x$,InStr(x$,",") - 1) & "." If Microsoft.VisualBasic.Len(qs$) > InStr(x$,".")'chiffres apres x$=x$ & Microsoft.VisualBasic.Right(qs$,Len(qs$) - InStr(x$,".")) end if End If If InStr(x$,".")=0 or x$="" then: x$=x$ & ".": End If'manque . x$=IIf(x$=".","0.00",x$ & "00") If Microsoft.VisualBasic.Left(x$,1)="." then: x$="0" & x$: End If deci=Microsoft.VisualBasic.Left(x$,InStr(x$,".") + 2) End Function Appel de la fonction: textbox1.textÞci(textbox1.text)
Pour compléter la fonction, celle-ci arrondi à 2 décimales en analysant au dela des 2 décimales: Private Function Ajust(XS#) As double 'arrondi des resultats X$=CStr(XS#): X$ = IIf(InStr(X$, ".") = 0, X$ & ".0000", X$ & "0000") Ajust = val(deci(X$)) If Val(Mid$(X$, InStr(X$, ".") + 3, 2)) > 49 Ajust = deci(CStr(Ajust) + val("0.01"))'appel de la fonction Deci End If End Function
Et pendant la saisie dans la textbox (appelée ici T21) en limitant à 2 les décimales, en n'autorisant que le point et les chiffres: Private Sub T21_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles T21.KeyDown If e.KeyValue<>46 and e.KeyValue<>8 and e.KeyValue<>39 and e.KeyValue<>37 If (e.KeyValue0 and instr(T21.text,".")<>0) or e.KeyValue8 e.SuppressKeyPress = -1 elseIf (Len(T21.Text)=InStr(T21.Text,".") + 2 and InStr(T21.Text,".")<>0) or ((e.KeyValue<96 or e.KeyValue>105) and e.KeyValue<>110) e.SuppressKeyPress = -1 End If end if End Sub