Point décimal à la calculatrice en c#
AHHHHH ok c'est me rend fou.
Pourquoi quand ma virgule au mauvais endroit par exemple
si j'ai la chaîne 567 dans la zone de texte et cliquez sur le décimal bouton je m'attends (ou je veux) la zone de texte pour modifier à 567. mais au lieu de cela je obtenir .567
Il ne va dans le bon endroit quand j'ai ajouter un autre numéro, par exemple, si j'avais le numéro 4, puis tout de suite après faire la dessus j'aimerais obtenir 567.4
Edit:
Voilà mon code entier:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace Calculator
{
public partial class frmCurrencyCalc : Form
{
public frmCurrencyCalc()
{
InitializeComponent();
}
private void cmdZero_Click(object sender, EventArgs e)
{
if (txtScreen.Text == "0")
{
txtScreen.Text = "0";
}
else
{
txtScreen.AppendText("0");
}
}
private void cmd1_Click(object sender, EventArgs e)
{
if (txtScreen.Text == "0")
{
txtScreen.Text = "1";
}
else
{
txtScreen.AppendText("1");
}
}
private void cmdTwo_Click(object sender, EventArgs e)
{
if (txtScreen.Text == "0")
{
txtScreen.Text = "2";
}
else
{
txtScreen.AppendText("2");
}
}
private void cmdThree_Click(object sender, EventArgs e)
{
if (txtScreen.Text == "0")
{
txtScreen.Text = "3";
}
else
{
txtScreen.AppendText("3");
}
}
private void cmdFour_Click(object sender, EventArgs e)
{
if (txtScreen.Text == "0")
{
txtScreen.Text = "4";
}
else
{
txtScreen.AppendText("4");
}
}
private void cmdFive_Click(object sender, EventArgs e)
{
if (txtScreen.Text == "0")
{
txtScreen.Text = "5";
}
else
{
txtScreen.AppendText("5");
}
}
private void cmdSix_Click(object sender, EventArgs e)
{
if (txtScreen.Text == "0")
{
txtScreen.Text = "6";
}
else
{
txtScreen.AppendText("6");
}
}
private void cmdSeven_Click(object sender, EventArgs e)
{
if (txtScreen.Text == "0")
{
txtScreen.Text = "7";
}
else
{
txtScreen.AppendText("7");
}
}
private void cmdEight_Click(object sender, EventArgs e)
{
if (txtScreen.Text == "0")
{
txtScreen.Text = "8";
}
else
{
txtScreen.AppendText("8");
}
}
private void cmdNine_Click(object sender, EventArgs e)
{
if (txtScreen.Text == "0")
{
txtScreen.Text = "9";
}
else
{
txtScreen.AppendText("9");
}
}
private void cmdDecimal_Click(object sender, EventArgs e)
{
txtScreen.AppendText(".");
cmdDecimal.Enabled = false;
}
private void cmdCancel_Click(object sender, EventArgs e)
{
txtScreen.Text = "0";
cmdDecimal.Enabled = true;
}
}
}
Nous ne pouvons pas dire ce que txtScreen est.
ses une zone de texte. Imaginez une calculatrice. Le txtScreen est l'écran d'affichage
ce code n'est qu'un morceau de mon code entier
J'ai écrit un petit exemple d'application pour tester cela et ne semble pas possible de reproduire ce que vous décrivez. Est-il autre chose qui manque? Êtes-vous de faire quelque chose avec laquelle le point d'insertion est dans votre code?
ma zone de texte est aligné à droite à gauche ne fait que changer.
ses une zone de texte. Imaginez une calculatrice. Le txtScreen est l'écran d'affichage
ce code n'est qu'un morceau de mon code entier
J'ai écrit un petit exemple d'application pour tester cela et ne semble pas possible de reproduire ce que vous décrivez. Est-il autre chose qui manque? Êtes-vous de faire quelque chose avec laquelle le point d'insertion est dans votre code?
ma zone de texte est aligné à droite à gauche ne fait que changer.
OriginalL'auteur Pops | 2010-02-22
Vous devez vous connecter pour publier un commentaire.
La
RightToLeft
l'air d'être votre problème.Comme décrit dans la MSDN,
Comme l'une des réponses précédentes ont suggéré, ce doit être définie à false, mais avec
TextAlign
définie à Droite pour imiter l'apparence d'une véritable calculatrice.Non, cela aura le même effet. Le même code que vous tapez est généré par le Concepteur Windows Forms dans le [nom du formulaire].Le concepteur.cs fichier.
Fyi. Je suis sous Windows 7 avec VS 2008 et que vous avez copié votre problème par la mise en RightToLeft de Vrai. La désactivation de RightToLeft fixe, du moins pour moi.
comment puis-je le désactiver?
OriginalL'auteur Julian Martin
Mon conseil est -- définir une couche de gestion. Dans votre cas, une variable de type double. Après le clic sur un bouton, mettre à jour la variable d'abord. Ensuite, le format de la valeur.
decimal
variable? Pas de virgule flottante arrondi de cette façon.Ce qui convient le mieux
OriginalL'auteur Kerido
Mon conseil est de définir
TextAlign
à Droite, mais laissezRightToLeft
définie sur Non.Edit: cela dit, ce problème peut être liée à ces paramètres.
Je me souviens d'un ami ayant-ce un bug similaire à présent au début de 2009, dans Visual Studio 2008 sur Windows Vista. Curieusement, le même problème ne se produit pas sur la même version de Visual Studio sur Windows XP.
Si vous n'avez pas mis à jour de Visual Studio /.NET 3.5 Le Service Pack 1, je suggère de faire cela et voir si cela résout le problème.
OriginalL'auteur Powerlord
Peut-être essayer une autre méthode:
(Est également à votre zone de texte, le texte aligment, aligné à droite... si ce n'est ce qui peut contribuer à votre problème.)
Si mes suggestions ne fonctionnent pas ensuite il doit y avoir un effet indésirable quelque part dans votre code. Vous disposez de tous les gestionnaires d'événements sur txtScreen? Par exemple, un KeyDown gestionnaire, ou quelque autre gestionnaire qui déplace le point d'insertion?
ive a édité la question. il contient maintenant l'ensemble de mon code
OriginalL'auteur
Je pense que vous avez quelques choses ici.
Par les regards de celui-ci, vous avez mis:
Si vous ajoutez juste la virgule, vous obtenez le résultat que vous décrivez. Essayez d'utiliser quelque chose comme:
Cela vous donnera le résultat que vous décrivez.
Vous pourriez être l'ouverture d'une boîte de pandore. Lorsque vous démarrez le formatage de la zone de texte, vous sont en train de changer de tenue d'une valeur de présentation. Par exemple:
Ensuite, vous devrez commencer à écrire fou des règles de validation pour éviter des valeurs comme 567.00.1 etc.
OriginalL'auteur Christian Payne
Juste pour que vous le savez tous qui sont intéressés.
J'ai réussi à le résoudre en quelque sorte. Je me suis contenté de supprimer le droit à gauche de la chose dans le code de conception et de réaligner (à l'aide de l'interface graphique) à droite, et de ses travaillé...bizarre que je n'ai rien de différent de la dernière fois...
Oh bien
Merci à vous tous pour votre aide
Beaucoup aprreciated
x
OriginalL'auteur Pops