Souci de textbox [Résolu]

Signaler
Messages postés
92
Date d'inscription
mercredi 4 décembre 2002
Statut
Membre
Dernière intervention
18 mai 2018
-
Messages postés
15414
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
24 janvier 2021
-
Bonjour,
Je reviens a la prog apres un long arret alors je me lance dans une ... calculatrice lol
Mais voila j'ai un souci,
Je veux permutter les chiffres en positif negatif,avec l'ajout du symbole moins... mais cela ne marche pas
avez vous une idee merci

private void bsigne_Click(object sender, EventArgs e)
{
if (bsigne.Tag!="1")
{
textafficher.Text.Insert(0,"-");
bsigne.Tag = "1";
}
}

R A P A K O O T I
A voir également:

11 réponses

Messages postés
15414
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
24 janvier 2021
503
Là tu affectes le résultat de remove à la textbox:
textafficher.Text = textafficher.Text.Remove(longueur-1,1); 


mais pas là:
textafficher.Text.Insert(0,"-"); 


Whismeril
Messages postés
15414
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
24 janvier 2021
503
Bonsoir

pourquoi ne pas multiplier le nombre par -1, quelque soit le signe tu auras l'inverse:

double nombre = Convert.ToDouble(textafficher.Text);
nombre *= -1;
textafficher.Text = nombre.ToString();


J'ai tapé de tête, la syntaxe est peut-être un peu fausse.

Pour tes prochains posts, voici les conseils de NHenry (surtout le point 2):

[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualVasic (onglet Références dans les propriétés du projet).
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list

Whismeril
Messages postés
92
Date d'inscription
mercredi 4 décembre 2002
Statut
Membre
Dernière intervention
18 mai 2018

Merci de la rapidité de la reponse , en fait , je modifiais la textbox par exemple pour la touche retour cela donne ca


private void bretour_Click(object sender, EventArgs e)
{
//Utilisation de la touche Retour , supprime le dernier caractere
if (textafficher.Text!="" )
{ string caracsupprime;
int longueur;
longueur = textafficher.TextLength;
caracsupprime=textafficher.Text.Remove (0,longueur-1);
textafficher.Text = textafficher.Text.Remove(longueur-1,1);
if (caracsupprime = ",")
bvirgule.Tag="0";

}
}

et donc je voulais ajouter visuellement le symbole -
pour apres gener les calculs mais je vais essaye comme ca merci

Par contre a tu une idée de "pourquoi cela ne fonctionne pas "??
merci de ton aide


R A P A K O O T I
Messages postés
92
Date d'inscription
mercredi 4 décembre 2002
Statut
Membre
Dernière intervention
18 mai 2018

Merci de la rapidité de la reponse , en fait , je modifiais la textbox par exemple pour la touche retour cela donne ca

[code=cs]
private void bretour_Click(object sender, EventArgs e)
{
//Utilisation de la touche Retour , supprime le dernier caractere
if (textafficher.Text!="" )
{ string caracsupprime;
int longueur;
longueur = textafficher.TextLength;
caracsupprime=textafficher.Text.Remove (0,longueur-1);
textafficher.Text = textafficher.Text.Remove(longueur-1,1);
if (caracsupprime = ",")
bvirgule.Tag="0";

}
}
[code]
et donc je voulais ajouter visuellement le symbole -
pour apres gener les calculs mais je vais essaye comme ca merci

Par contre a tu une idée de "pourquoi cela ne fonctionne pas "??
merci de ton aide


Desole j'avais pas vu tes conseil
R A P A K O O T I
Messages postés
92
Date d'inscription
mercredi 4 décembre 2002
Statut
Membre
Dernière intervention
18 mai 2018

Merci bcp de ta réponse j'ai une derniere question se ratachant cela concerne la declaration de variable et la nomenclature

  private void bmemoire_Click(object sender, EventArgs e)
        {
            string memoire;
            if (bmemoire.Tag != "1")
            {
               
               memoire = textafficher.Text;
                bmemoire.Tag = "1";
            }
            if (bmemoire.Tag=="1" )
            {
                textafficher.Text = memoire;
                bmemoire.Tag = "0";
            }
        }


Cela me renvois une erreur
Erreur 3 Utilisation d'une variable locale non assignée 'memoire' E:\Dropbox\Programmation Csharp\Premier programme\Premierecalculatrice\Premierecalculatrice\Form1.cs 198 37 Premierecalculatrice
Alors que j'ai declaré la variable dans une procedure "parent" en amont comment fait pour l'utiliser dans une autre precedure conditionnelle?





R A P A K O O T I
Messages postés
15414
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
24 janvier 2021
503
Tu commences ton bloc par
string memoire;

Ce qui est équivalent à "oublie la variable memoire parente dans ce bloc et prends celle-là à la place".



Whismeril
Messages postés
92
Date d'inscription
mercredi 4 décembre 2002
Statut
Membre
Dernière intervention
18 mai 2018

Oui on est d accord mais justement il ne veut pas que je l utilisé dans le else qui est lui "enfant" et par la même occasion comment déclare une
Variable pour toute la forme ?
Merci vraiment de ton aide


R A P A K O O T I
Messages postés
15414
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
24 janvier 2021
503
Bonjour

en C#, déclarer une variable n'est pas l'assigner:

 private void bmemoire_Click(object sender, EventArgs e)
        {
            string memoire;//là tu déclares la variable pour le bloc bmemoire_Click uniquement,
                           //mais tu ne l'assignes pas la variable est donc null
            if (bmemoire.Tag != "1")
            {
               memoire = textafficher.Text; //là tu assignes la variable avec la valeur du textbox,
                                            //mais si le code du bloc est entier, elle ça ne servira à rien
                bmemoire.Tag = "1";
            }
            if (bmemoire.Tag=="1" )
            {
                textafficher.Text = memoire;// là tu tentes d'assigner memoire qui est null, au textbox.
                bmemoire.Tag = "0";
            }
        }


Si tu veux utiliser mémoire plus loin dans le code et surtout si tu veux utiliser le contenu "parent" de mémoire, il ne faut pas la déclarer à nouveau.

 private void bmemoire_Click(object sender, EventArgs e)
        {
            if (bmemoire.Tag != "1")
            {
               
               memoire = textafficher.Text;
                bmemoire.Tag = "1";
            }
            if (bmemoire.Tag=="1" )
            {
                textafficher.Text = memoire;
                bmemoire.Tag = "0";
            }
        }

Whismeril
Messages postés
92
Date d'inscription
mercredi 4 décembre 2002
Statut
Membre
Dernière intervention
18 mai 2018

Bonjour
Alors tout d'abord merci de tout le temps que tu prend

Je comprend parfaitement ce que tu m'explique,
dans ces cas la meme si faut evité je doit declaré la variable plus haut dans le programme, car si je l'assign en debut de procedure, il ne va pas tenir compte de mon tag et a chaque fois il va me réinitialise la variable .

On peut declare ou les variable utilisé dans plusieurs procedure et que l'on veut avoir constament sous la main :-)

R A P A K O O T I
Messages postés
92
Date d'inscription
mercredi 4 décembre 2002
Statut
Membre
Dernière intervention
18 mai 2018

J'ai trouvé merci bcp de ton temps

R A P A K O O T I
Messages postés
15414
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
24 janvier 2021
503
La portée des variables dépend des blocs compris entre {}.

dans une méthode la variable, elle n'existe qu'à partir de la ligne ou elle est déclarée, mais pas dans une classe.
Par exmple:



{
public class Toto

   private string tutu;
   
   public Toto()
     {
        //tutu et tâta existe ici
     }

  private string tata; 

}



Cependant d'un point de vue organisation, ça reste lus judicieux de déclarer toutes les variables au même endroit.

Whismeril