Communication entre fenetre C#

Fermé
xmoix Messages postés 36 Date d'inscription vendredi 26 juin 2009 Statut Membre Dernière intervention 29 juin 2009 - 27 juin 2009 à 19:23
chuka Messages postés 965 Date d'inscription samedi 11 octobre 2008 Statut Membre Dernière intervention 29 juillet 2010 - 29 juin 2009 à 11:11
Bonjour,
Comment changer la propriété d'un control d'un form à partir d'un autre form ?
Merci d'avance pour vos réponses. ^^
A voir également:

11 réponses

chuka Messages postés 965 Date d'inscription samedi 11 octobre 2008 Statut Membre Dernière intervention 29 juillet 2010 378
27 juin 2009 à 20:29
Salut,
Voila une petite solution:
public maNouvelleFentre
{
         //delegate pour modifier les controls de ta fenetre principale
         private delegate void SetPropertyDelegate(object ctl, string objName, object newValue);
         MaFenetrePrincipale F;
         //constructeur de ta nouvelle fenetre
         public maNouvelleFentre(MaFenetrePrincipale F)
         {
                   this.F=F;
          }

        public void SetProperty(object ctl, string propName, object newValue)
        {
            Type t = ctl.GetType();
            PropertyInfo pi = t.GetProperty(propName);

            if (pi != null)
            {
                pi.SetValue(ctl, newValue, null);
            }
        }
        public void ta_fonction()
        {
              .........................
              .........................
              //modifie le control Qui de la fenetre MaFenetrePrincipale , la propriété Text avec la valeur Mon_Text
               F.Invoke(new SetPropertyDelegate(SetProperty), new object[] { (object)lQui, "Text", "Mon_Text" });
         }

J'espere ca pourra t'aider!!!
@+
1
xmoix Messages postés 36 Date d'inscription vendredi 26 juin 2009 Statut Membre Dernière intervention 29 juin 2009 2
28 juin 2009 à 16:03
Ok, heu, je ne comprends pas tout... des "new" dans des arguments ? Et à quoi sert "SetProperty" ?
0
chuka Messages postés 965 Date d'inscription samedi 11 octobre 2008 Statut Membre Dernière intervention 29 juillet 2010 378
28 juin 2009 à 16:15
Salut,
En fait, tu es obligé de passer par un delegate...une sorte de pointeur de fonction que tu dois utiliser pour la modification d'un control d'un autre thread...
Donc tu déclares ton degelate qui va pointer sur la fonction que tu vas lui passer en argument lors de l'appel:
new SetPropertyDelegate(SetProperty) //ce delegate va effectuer la fonction SetProperty, mais SetProterty prend trois arg en parametre, que tu passes dans un tableau d'objet:
new object[] { (object)lQui, "Text", "Mon_Text" });
Ainsi dans la fonction SetProperty, grâce à la reflexité, tu récupère le type de l'object passé en argument (une checkbox, une combobox, un label, une textbox etc....) et tu peux lui affecter la nouvelle valeur...
J'espere que cela a pu t'éclaircir un peu!!
@+
0
xmoix Messages postés 36 Date d'inscription vendredi 26 juin 2009 Statut Membre Dernière intervention 29 juin 2009 2
28 juin 2009 à 16:37
tu met tout dans la meme classe ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
chuka Messages postés 965 Date d'inscription samedi 11 octobre 2008 Statut Membre Dernière intervention 29 juillet 2010 378
28 juin 2009 à 16:39
Salut,
Oui
0
xmoix Messages postés 36 Date d'inscription vendredi 26 juin 2009 Statut Membre Dernière intervention 29 juin 2009 2
28 juin 2009 à 22:39
argh !!!! g travaillé toute la journée !!! pfff.. c long la prog !!!
0
form à partir d'un autre form ? ???????????
what!!!!!!!!!!!!!!!!!!!! pricise t'a question nom
0
xmoix Messages postés 36 Date d'inscription vendredi 26 juin 2009 Statut Membre Dernière intervention 29 juin 2009 2
28 juin 2009 à 23:11
nan, heu je crois que g compris, mais c juste que g travaillé toute la journée, un vrai bosseur, com d'ab hi hi hi !!!
0
UN VRAI BOSSEUR. C BIEN BONNE CHANCE
0
xmoix Messages postés 36 Date d'inscription vendredi 26 juin 2009 Statut Membre Dernière intervention 29 juin 2009 2
29 juin 2009 à 10:00
Dis moi, on fait pareil entre deux fenetre non-principale ?
0
chuka Messages postés 965 Date d'inscription samedi 11 octobre 2008 Statut Membre Dernière intervention 29 juillet 2010 378
29 juin 2009 à 11:11
Salut,
Normalement oui.
Tu refais le même schema que le premier code envoyé, et cela devrait fonctionner!!
@+
0