Textbox pour float ? (avec saisie particulière) [Résolu]

Signaler
Messages postés
63
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
28 juin 2012
-
Messages postés
63
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
28 juin 2012
-
Bonjour à tous voila je sais qu'il y a beaucoup de sujet dessus mais je pense que mon problème est assez bizzare.
En effet j'ai fait ce petit bout de code dans un formulaire sur une textebox afin de modifier sa saisie

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (char.IsNumber(e.KeyChar))
            {                if (e.KeyChar '1') e.Handled false;                else if (e.KeyChar '2') e.Handled false;                else if (e.KeyChar '3') e.Handled false;                else if (e.KeyChar '4') e.Handled false;                else if (e.KeyChar '5') e.Handled false;                else if (e.KeyChar '6') e.Handled false;                else if (e.KeyChar '7') e.Handled false;                else if (e.KeyChar '8') e.Handled false;                else if (e.KeyChar '9') e.Handled false;                else if (e.KeyChar '0') e.Handled false;                else if (e.KeyChar '.') e.Handled false;
                else e.Handled = true;
            }
        } 

Cependantnormalement d'après ce programme (et surtout d'après ce que j'ai lu sur Codes Sources) il devrais uniquement saisir les chiffres et les "." et bien en fiat il saisie tous . Et dernière chose quand je change les false en true et le true en false cela bloque les valeurs char (les chiffres et le ".") ???

Stay GREAT forever [  ]

7 réponses

Messages postés
327
Date d'inscription
mardi 17 février 2004
Statut
Membre
Dernière intervention
10 avril 2010
7
Salut,

e.Handled doit etre true seulement si tu ne veut pas que la textbox gere l'evenement automatiquement, donc si ce n'est pas un nombre et que ce n'est pas un point.

Essaye ca

if (!char.IsNumber(e.KeyChar) && e.KeyChar!='.')
{
     e.Handled = true;
}

Peut-etre que tu pourrais utiliser le control numericupdown sinon.
Messages postés
327
Date d'inscription
mardi 17 février 2004
Statut
Membre
Dernière intervention
10 avril 2010
7
Salut,

Les numericupdown acceptent des valeur de type "decimal", donc oui tu dois convertir tes floats en "decimal" et inversement.
Mais c'est aussi bien que de convertir des tring en float :p
tu peux utiliser numUpDown.DecimalPlaces pour le nombre de chiffres affichés après le point, puis
numUpDown.Value=(decimal)taValeurFloat;
taValeurFloat=(float)numUpDown.Value;
Messages postés
63
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
28 juin 2012

merci c'est exactement ce que je cherchai en fait c'est une textebox qui gere des coordonnées avec DirectX (3D) et pour les vecteur seul les float sont accepter et je n'ai pa trouver comment mettre des float avec un numericupdown sans passer par une conversion de ma variable.

Stay GREAT forever [  ]
Messages postés
63
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
28 juin 2012

En effet mais cela oblige à faire 2 numericUpDown (une avant la virgule et une après) et peut éstétique pour mon apply mais sisnon çà marche aussi.

Merci beaucoup pour tes réponses WishhMaster jéspère quelles servirons à d'autre autant quel mon servis.

Stay GREAT forever [  ]
Messages postés
327
Date d'inscription
mardi 17 février 2004
Statut
Membre
Dernière intervention
10 avril 2010
7
Salut,
non tu n'as besoin que d'une numericUpdown. Si tu utilise la propriété DecimalPlaces, ça te permet d'entrer des nombres décimaux (avec virgule ou point, dépendent de la culture de ton application)
Enfin tu fais comme tu veux =)
Messages postés
63
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
28 juin 2012

Tu as raison autant pour moi j'avai mal vu/utilisé les propriétés de la numericbox ac VS 2005

Stay GREAT forever [  ]
Messages postés
63
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
28 juin 2012

(oups numericUpdown)

Stay GREAT forever [  ]