Probleme pour acceder a une textbox

Résolu
Signaler
Messages postés
9
Date d'inscription
vendredi 20 février 2009
Statut
Membre
Dernière intervention
2 juillet 2009
-
Messages postés
9
Date d'inscription
vendredi 20 février 2009
Statut
Membre
Dernière intervention
2 juillet 2009
-
Bonjour a tous,

Premierement, desole si cette question a deja ete posee, mais je n'ai pas trouve de reponse qui me convienne ou que je comprenne.
Dans le but de traduire des applications existantes, et afin de gagner le maximum de temps possible: je rajoute une classe traduction, ainsi qu'une legere modification du main.
En gros, selon les variables d'entrees, le programme rempli un XML de toutes les champs a traduire. Ou utilise un fichier XML pour changer les valeurs de ces champs.

voici donc la fonction chargee de changer la valeur des controls de la classe traduction:
 
public void LoadLabel(string path)
        {
            List<TextToChange> ListToLoad = new List<TextToChange>();
            XmlManager load = new XmlManager(); //classe traitant avec le fichier XML
            load.FileName = path;
            load.loadfromXML(ListToLoad);//recuperer des donnees
            ArrayList formlist = FormsLister();//tableau de tous les forms de l'application
           
           
            foreach (Form f in formlist)
            {
               
                foreach (Control ctrl in f.Controls)
                {
                    foreach (TextToChange txt in ListToLoad)
                    {                        if (ctrl.Name txt.Tname && txt.Nform f.Name)
                        {
                            ctrl.Text = txt.Tvalue;
                        }
                    }
                }
              
            }
        }

Au deboggeur, je vois qu'il recupere bien tout ce que je veux, qu'il fait meme le changement sur ctrl.text, mais pas de resultat a l'ecran.

Je sais plus trop quoi faire, sachant que je ne connais ni les formulaires presents, ni les controls( la methode doit etre generique).

Evidemment, toutes critiques sont bonnes a prendre.

merci d'avance, en esperant ne pas trop m'faire engueuler.

4 réponses

Messages postés
433
Date d'inscription
samedi 26 avril 2003
Statut
Membre
Dernière intervention
4 décembre 2009
1
Juste comme ca :

Quand tu affiches un de tes formulaire, tu fais un truc du genre :

Form1 f = new Form1();
f.Show();

Or, la première ligne instancie un nouveau formulaire et donc ne réutilise pas le formulaire que tu as trafiqué au start de ton application.

2 solutions :
Soit tu gardes en mémoire une instance traduite de tout tes formulaires et tu les réutilise (pénible)
Soit tu traduit tes formulaires à la volée entre l'instanciation et l'affichage :
Form1 f = new Form1();
// Ton code foreach de traduction des libéllés
f.Show();

Bon courage.
---------------------------------------
R. Seb
MCP C# 2.0 - MCTS ASP.Net 2.0
Messages postés
276
Date d'inscription
lundi 8 septembre 2008
Statut
Membre
Dernière intervention
15 avril 2013
2
Bonjour,

Essaye ctrl.Update(); après ctrl.Text = txt.Value;
Messages postés
9
Date d'inscription
vendredi 20 février 2009
Statut
Membre
Dernière intervention
2 juillet 2009

J'ai deja essaye, mais le probleme ne semble pas venir de la.
Messages postés
9
Date d'inscription
vendredi 20 février 2009
Statut
Membre
Dernière intervention
2 juillet 2009

Actuellement, je me sers d'un clic boutton pour faire le changement (la flemme de taper les arguments), donc la Form est deja instanciee (du moins la form mere).

Mais c'est une tres bonne remarque, j'ai completement occulte que mon code ne modifiera que ce qui est deja instancie.

Je vais voir s'il m'est toujours impossible de modifier les sources.

merci beaucoup