TextBox + Decimal + Demande de conseils + Helppp

cs_emmanuel9 Messages postés 903 Date d'inscription mercredi 23 février 2005 Statut Membre Dernière intervention 16 juin 2010 - 7 juin 2005 à 11:54
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 - 7 juin 2005 à 13:28
Bonjour à tous,



Je suis en train de faire un textbox qui n'accepte que des nombres à virgules.

Pourriez vous me dire ce que je vous pensez de ce code c'etait du
c++.net mais j'ai retranscrit en c# alors j'ai peut être oublié des
-> ou :: par ci par là. "m" est le textbox "virgule" est la virgule
tiré du culture regional et "nb_virgule" est le nombre de virgule dans
le textBox et ce sont des variables globals. En faite je compte me
servir de ce code pour dérivé un textbox. Le problème en faite que j'ai
c'est avec les virgules. Est ce que quand il tape une virgule il faut
prendre la virgule de culture regional ou prendre toujours le "." ?
Qu'est ce qui est le plus usuel. Et si mettons il change de culture une
fois qu'il a rentré "15,25", il faut qq chose pour controler et
remettre le textbox à blanc je pense. Pour bloquer les copier collers
j'ai pas encore fait. Qu'en pensez vous et que puis je faire pour faire
qq chose de solide qui n'ais pas de bug ?



Par avance, merci.



// EVENEMENT KEY_PRESS



private: System::Void m_KeyPress(System::Object * sender, System::Windows::Forms::KeyPressEventArgs * e)

{



// si dans le texte qu'on selectionne se trouve une virgule alors nb_virgule passe à 0


// comme ca on peut taper directement une
virgule




String selection =
this.m.get_SelectedText() ;




for (int i = 0 ; i
=1)

e.Handled = true ;

else

e.Handled = false ;



}

}



// EVENEMENT TEXT_CHANGED



private: System::Void m_TextChanged(System::Object * sender, System::EventArgs * e)

{Convert * c ;



// si le premier caractère rentré est une virgule alors on affiche 0+virgule



if (this.m.Text.CompareTo("") ! = 0)

{




if
(this.m.Text.get_Chars(0) = = virgule)

{


this.m.Text =
String.Concat("0",c->ToString(virgule)) ;




this.m.SelectionStart = 2 ;


}

}



// ici on compte le nombre de virgule rentré



nb_virgule = 0 ;



for (int i = 0 ; i ToChar(p) ;

}

3 réponses

Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
7 juin 2005 à 12:39
C'est le code C++ ca ! : )
0
cs_emmanuel9 Messages postés 903 Date d'inscription mercredi 23 février 2005 Statut Membre Dernière intervention 16 juin 2010 2
7 juin 2005 à 12:45
private: System::Void m_TextChanged(System::Object * sender, System::EventArgs * e)



C'est resté en c++ ca.



En faite si je permet de rentrer des "." et des "," et je fais une
fonction get_Decimal() qui remplace les "." et les "," par la
virgule tiré du culture regional et qui renvoi un decimal qu'en pensez
vous ?
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
7 juin 2005 à 13:28
Pour la culture regional je ne sais pas..

Pour transcrire ton code en C# faut remplacer l'operateur de resolution de portee "::" par "." supprimer tout les operateurs d'adresse "*" puis remplacer "->" par "." et remplacer toutes les fonctions commencant par "get_" par leurs proprieté equivalente.
0
Rejoignez-nous