comment format de monnaie sous la zone de texte?
Je veux saisir un nombre dans la zone de texte, une de mes textbox convertir automatiquement en virgule(,) format. J'ai essayé de le faire, mais il fonctionne mal. - Il m'aider? Comme ce 1,20(je VIENS d'ENTRER 120);
private bool IsNumeric(int Val)
{
return ((Val >= 48 && Val <= 57) || (Val == 8) || (Val == 46));
}
String str;
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
int KeyCode = e.KeyValue;
if (!IsNumeric(KeyCode))
{
if (KeyCode == 13)
{
e.Handled = true;
vendas();
str = null;
}
e.Handled = true;
return;
}
else
{
e.Handled = true;
}
if (((KeyCode == 8) || (KeyCode == 46)) && (str.Length > 0))
{
str = str.Substring(0, str.Length - 1);
}
else if (!((KeyCode == 8) || (KeyCode == 46)))
{
str = str + Convert.ToChar(KeyCode);
}
if (str.Length == 0)
{
textBox1.Text = "";
}
if (str.Length == 1)
{
textBox1.Text = "0,0" + str;
}
else if (str.Length == 2)
{
textBox1.Text = "0," + str;
}
else if ((str.Length > 2) && (str.Length != 6) && (str.Length != 9) && (str.Length != 12))
{
textBox1.Text = str.Substring(0, str.Length - 2) + "," + str.Substring(str.Length - 2);
textBox1.Text = textBox1.Text;
}
else if ((str.Length > 6) && (str.Length != 8) && (str.Length != 10) && (str.Length != 12))
{
textBox1.Text = str.Substring(0, str.Length - 3) + "," + str.Substring(str.Length - 1);
textBox1.Text = textBox1.Text;
}
}
Il me montre 10,01 au lieu 0,01?
- pourquoi voulez-vous faire cela?
- quel est le fou de l'indentation?
- Texte de maths est VRAIMENT dur.
- Vous avez spécifié un paramètre de Chaîne incorrecte quelque part. Aussi, pourquoi ne pas simplement utiliser le nombre de fonctions de mise en forme?
- je suis en train de faire de la trésorerie compteur de programme thatswhy j'en ai besoin . exp: prix total est à 10,50 et j'ai besoin d'écrire dans la zone de texte 1050 mais la zone de texte convertir automatiquement les mêmes chiffres;
Vous devez vous connecter pour publier un commentaire.
Ce que vous voulez, c'est un MaskedTextBox.
Tout simplement mis de masque de
"$999,999,990.00"
et de l'entrée de l'utilisateur saisit doivent être des chiffres, et il doit y avoir au moins 3, mais l'entrée peut être jusqu'à plusieurs centaines de millions (si vous avez besoin des milliards et des milliards, il suffit d'ajouter plus de 9s et des virgules). En tant que l'utilisateur entre ces chiffres, la mise en forme va s'ajuster en fonction sur le masque. Voici le kicker; MaskedTextBox respecte la culture de l'information, donc si vous spécifiez la culture française, les virgules devenir des espaces, la virgule devient une virgule et le signe dollar devient le symbole de l'Euro.J'ai été à l'origine de suggérer MaskedTextBox, mais le VTT est conçu pour les de gauche à droite style de mise en forme d'un fixe (ou connu à l'avance, au moins) une chaîne de longueur, ce qui le rend pas aussi approprié pour la monnaie.
Tout d'abord, je vous recommande de faire quoi que ce soit à l'aide de codes de touche ou autre, et s'en tenir à quelque chose d'un peu plus facile en juste de la validation et de l'édition du texte en cas de changement:
La partie principale est
string.Format(CultureInfo.CreateSpecificCulture("en-US"), "{0:C2}", ul);
le fr-fr assure de toujours afficher $ et decmials que '.'s. Le{0:C2}
formats de la chaîne sous la forme d'un nombre (0
) de la monnaie (:C
) à 2 décimales espaces (2
).Ce qui n'empêche pas l'utilisateur d'entrer du texte, mais vous pouvez garder le texte précédent (par exemple '$23.00') et si l'utilisateur entre quelque chose qui n'est pas un nombre décimal.TryParse échouera, à quel point vous pouvez rétablir le texte pour ce qu'il était avant que l'utilisateur a changé (juste en insérant un bloc autre près de la fin de ce gestionnaire d'événement).
Je vous recommande l'établissement de la TUBERCULOSE texte en "$0.00', ou quelque chose d'abord, ou le curseur sautera quand il met le premier changement. Il a aussi quelques questions de la sélection lorsque les virgules sont ajoutant des, que vous pouvez obtenir autour de la mémorisation de la position de la sélection juste avant de le formater et de le changer par la suite, ou de faire quelque chose de plus complexe, c'est juste un exemple.
Bien, au premier coup d'œil, je remarque que rien au sujet de votre code que ce soit fait aucun sens.
D'abord et avant tout, apprendre les normes de codage pour l'indentation. Ce code est extrêmement difficile à lire. Je suis tenté de drapeau de cette question comme offensant pour avoir eu à le regarder.
Prochain, cette ligne:
Dit: si le mot de code n'est PAS numérique, procédez de la manière suivante choses, où l'information suivante: "stuff" est tout un tas d'opérations numériques sur un mot de code qui est présumée être numérique.
Prochaine,
str
n'est pas définie n'importe où dans votre méthode. Peut-être qu'il est défini à l'échelle mondiale, mais qui serait tout simplement stupide. Plutôt, vous devriez obtenir la valeur actuelle de programme.Et enfin:
vous n'avez pas besoin de réinventer la roue. Il ya des tonnes d'outils là-bas qui font ce genre de chose pour vous. En fait, je suis assez sûr de gagner les formes a un contrôle natif qui va le faire. Il pourrait même être un attribut de la zone de texte, je ne m'en souviens pas.