Probleme pour acceder a une textbox [Résolu]

cs_dowi 9 Messages postés vendredi 20 février 2009Date d'inscription 2 juillet 2009 Dernière intervention - 23 févr. 2009 à 09:19 - Dernière réponse : cs_dowi 9 Messages postés vendredi 20 février 2009Date d'inscription 2 juillet 2009 Dernière intervention
- 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.
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
titeoe 433 Messages postés samedi 26 avril 2003Date d'inscription 4 décembre 2009 Dernière intervention - 23 févr. 2009 à 11:23
3
Merci
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

Merci titeoe 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 100 internautes ce mois-ci

Commenter la réponse de titeoe
ed73 276 Messages postés lundi 8 septembre 2008Date d'inscription 15 avril 2013 Dernière intervention - 23 févr. 2009 à 09:47
0
Merci
Bonjour,

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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.