Textbox en panne [Résolu]

Signaler
Messages postés
2
Date d'inscription
samedi 3 février 2007
Statut
Membre
Dernière intervention
27 août 2018
-
Messages postés
15932
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
14 mai 2021
-
Bonjour,

il m'est impossible de modifier par programme un textbox :
voici le code

void VerifierNom(object Sender, EventArgs Eve)
        {
            int Indice = Convert.ToInt32(((TextBox)Sender).Tag);
            int Place = TextJoueur[Indice].SelectionStart;

            TextBox TexteTest =  (TextBox)Sender;
            this.Text = Convert.ToString(Indice) + "  //  " + Convert.ToString(Place) + "  //  " + TextJoueur[Indice].Text + "  //  " + TexteTest.Text + " //  " + Convert.ToString(TexteTest.SelectionStart); .......



les données sont correctes pour "Sender" donc pour l'indice mais impossible d'avoir d'accès au textbox originel "TextJoueur" ni de le modifier alors que l'accès à "VerifierNom" est parfait, le this.text me servant de témoin.

c'est d'autant plus énervant que j'utilise cette routine dans d'autres programmes sans aucun problème

merci d'avance

EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.

2 réponses

Messages postés
15932
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
14 mai 2021
545
Bonjour

t'es sûr que c'est du C++?
Messages postés
14788
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
1 mai 2021
155
Déplacé en C#.
Messages postés
15932
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
14 mai 2021
545
oui mais j'espérais juste qu'il sache de lui-même dans quel langage il travaille....
Tu peux mettre un peu de couleur aussi s'il te plait?
Messages postés
14788
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
1 mai 2021
155
Done :)
Messages postés
15932
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
14 mai 2021
545
Merci
Messages postés
15932
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
14 mai 2021
545
Bon tout d'abord,
            int Indice = Convert.ToInt32(((TextBox)Sender).Tag);//ici tu castes sender en Textbox
            int Place = TextJoueur[Indice].SelectionStart;

            TextBox TexteTest =  (TextBox)Sender;//ici tu castes encore sender en Textbox

Caster 2 fois la même variable sur 3 lignes est d'une part une répétition de code inutile, et d'autre part une perte de temps d'exécution.

            TextBox TexteTest =  (TextBox)Sender;
            int Indice = Convert.ToInt32(TexteTest.Tag);
            int Place = TextJoueur[Indice].SelectionStart;

Fera la même chose.

Ceci
 this.Text = Convert.ToString(Indice) + "  //  " + Convert.ToString(Place) + "  //  " + TextJoueur[Indice].Text + "  //  " + TexteTest.Text + " //  " + Convert.ToString(TexteTest.SelectionStart);

est une construction déconseillée, il est plus propre et plus facile (une fois qu'on a compris comment ça marche) de se servir de string.Format

this.Text = string.Format(@"{0} / {1} / {2} / {3} / {4}",Indice, Place, TextJoueur[Indice].Text, TexteTest.Text,TexteTest.SelectionStart);
. L'@ devant évite de doubler les /
Tu pourrais aussi faire un tableau de string et le joindre avec " / " comme séparateur.

Maintenant pour ton problème, tu n'as pas expliqué ce qu'est TextJoueur, enfin si tu as dit
textbox originel "TextJoueur"
, mais un Textbox ne peut pas être indicé, donc tu as donné une mauvaise explication.
Comme on ne peut pas deviner, pour t'aider il nous faut plus d'infos.


Quand j'étais petit, la mer Morte n'était que malade.
George Burns