Probleme pour acceder a une textbox

Résolu
cs_dowi Messages postés 9 Date d'inscription vendredi 20 février 2009 Statut Membre Dernière intervention 2 juillet 2009 - 23 févr. 2009 à 09:19
cs_dowi Messages postés 9 Date d'inscription vendredi 20 février 2009 Statut Membre Dernière intervention 2 juillet 2009 - 23 févr. 2009 à 12:22
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

titeoe Messages postés 433 Date d'inscription samedi 26 avril 2003 Statut Membre Dernière intervention 4 décembre 2009 1
23 févr. 2009 à 11:23
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
3
ed73 Messages postés 276 Date d'inscription lundi 8 septembre 2008 Statut Membre Dernière intervention 15 avril 2013 2
23 févr. 2009 à 09:47
Bonjour,

Essaye ctrl.Update(); après ctrl.Text = txt.Value;
0
cs_dowi Messages postés 9 Date d'inscription vendredi 20 février 2009 Statut Membre Dernière intervention 2 juillet 2009
23 févr. 2009 à 09:54
J'ai deja essaye, mais le probleme ne semble pas venir de la.
0
cs_dowi Messages postés 9 Date d'inscription vendredi 20 février 2009 Statut Membre Dernière intervention 2 juillet 2009
23 févr. 2009 à 12:22
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
0