[VB.NET] Virgule Textbox

Résolu
Gornarf Messages postés 121 Date d'inscription   Statut Membre Dernière intervention   -  
Gornarf Messages postés 121 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à toutes et à tous,

Dans mes précédents poste je tournais avec VBA, je suis passé en VB.net sous VS2010express.

J'ai plus ou moins assez rapidement retrouvé mes repères de VBA sauf pour une chose.

A l'aide d'internet, j'ai réussi a créer une classe numerictextbox, il s'agit donc de textbox exclusivement numérique.

J'ai ensuite paramétré le nombre max de caractère dans chacune de mes box

Ce que je n'arrive pas a faire c'est de limiter la virgule à une seule!!

Actuellement je peux en mettre 2 ou 3 dans ma box si je le souhaite ce qui ne m'arrange pas.

Quelqu'un aurait une idée de code pour régler ca?

==> limiter la saisie de une seule virgule dans la textbox et donc annulée les saisie qui surviendraient après qu'une virgule ait déjà été introduite.


Merci d'avance

3 réponses

Nico# Messages postés 323 Date d'inscription   Statut Membre Dernière intervention   102
 
Salut,

tu peut le gerer dans l'evenement KeyPress avec un code comme celui la tu peut l'ameliorer car la je le fais rapidement en C# mais bon la syntaxe et assez ressemblante a VB.net pour cet exemple

  if(e.KeyChar == ',')
            {
                if(textBox1.Text.Contains(","))
                {
                    e.Handled = true;
                }
            }
0
Gornarf Messages postés 121 Date d'inscription   Statut Membre Dernière intervention   3
 
je test tout de suite! merci
0
Gornarf Messages postés 121 Date d'inscription   Statut Membre Dernière intervention   3
 
Ca marche nickel nico, merci.

Je poste ma solution complète qui permet de remplacer le point par la virgule et de n'autorisée la saisie que de 1 seule virgule dans la TXTbox

Private Sub NumericTextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles NumericTextBox1.KeyPress

'Remplace le point par une virgule

If Asc(e.KeyChar) = 46 Then e.KeyChar = ","
If Asc(e.KeyChar) = 44 And (CType(sender, TextBox).Text.IndexOf(",") > 0 Or CType(sender, TextBox).Text = "") Then e.Handled = False
NumericTextBox1.MaxLength = 8

'N'autorise qu'une seule virgule dans la box

If (e.KeyChar = ",") Then If (NumericTextBox1.Text.Contains(",")) Then e.Handled = True

End Sub
0