Communication entre fenetre C#

Bonjour,
Comment changer la propriété d'un control d'un form à partir d'un autre form ?
Merci d'avance pour vos réponses. ^^
Configuration: Windows Vista
Firefox 3.0.11

11 réponses

  • Votes
  • Date
  • Date décroissante
  1. 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. Ok, heu, je ne comprends pas tout... des "new" dans des arguments ? Et à quoi sert "SetProperty" ?
      1. 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!!
        @+
        1. argh !!!! g travaillé toute la journée !!! pfff.. c long la prog !!!
          1. form à partir d'un autre form ? ???????????
            what!!!!!!!!!!!!!!!!!!!! pricise t'a question nom
            1. 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 !!!
              1. Salut,
                Normalement oui.
                Tu refais le même schema que le premier code envoyé, et cela devrait fonctionner!!
                @+