Pb d aces a une fonction,

aragorn1024 Messages postés 13 Date d'inscription samedi 6 décembre 2003 Statut Membre Dernière intervention 27 avril 2004 - 2 janv. 2004 à 16:44
cs_vieuxLion Messages postés 455 Date d'inscription samedi 26 octobre 2002 Statut Membre Dernière intervention 6 avril 2004 - 3 janv. 2004 à 11:26
pb d aces a une fonction, voila ma premiere forme est une mdicontainer, et elle appel les autres form, ( des formulaires)

j ais cree une fonction
public void ad_contact()
{
Form4 FF = new Form4();
FF.MdiParent = this;
FF.Show();
}

qui cree une nouvelle fenetre fille a partir de la form1, mais le pb se pose kan je l appel d une autre form pour reagir a un click
comme ca:
Form1.ad_contact();

me sort d ereur :

Une référence d'objet est requise pour la propriété, la méthode ou le champ non statique 'WindowsApplication7.Form1.ad_contact()

merci d avance a tout ceux ki auront une idee :)

3 réponses

cs_vieuxLion Messages postés 455 Date d'inscription samedi 26 octobre 2002 Statut Membre Dernière intervention 6 avril 2004 8
2 janv. 2004 à 22:40
bonjour,

il me semble que tu confonds CLASSe et OBJET
lorsque tu fais
Form4 FF = new Form4();

Form4 est une classe
FF est un objet

si la classe Form1 possède une méthode (non statique)
public void ad_contact()

alors pour appeler cette méthode, il faut une référence de type OBJET de type Form1 ... ou alors passer cette méthode en "static" comme ceci :
public static void ad_contact()

et ta formule devient correcte
Form1.ad_contact()
0
aragorn1024 Messages postés 13 Date d'inscription samedi 6 décembre 2003 Statut Membre Dernière intervention 27 avril 2004
3 janv. 2004 à 09:45
question de newbis... mais comment on fait une reference ?

et sinon ca marche pas, de passer en static
" Le mot clé this n'est pas valide dans un initialiseur de propriété statique, de méthode statique ou de champ statique"

faut surement creer une sorte d include, mais je trouve pas comment faire :(

merci pour ta reponsse.
0
cs_vieuxLion Messages postés 455 Date d'inscription samedi 26 octobre 2002 Statut Membre Dernière intervention 6 avril 2004 8
3 janv. 2004 à 11:26
Pour appeler un objet, il faut une référence
soit deux objets f1 et f2
Form1 f1= new Form1();
Form2 f= new Form2();
Ils ne peuvent pas communiquer car aucun ne possède de référence sur l'autre

Dans ton cas, c'est f1 qui fabrique une f4 dans la méthode ad_contact et qui lui passe une référence (this) sur son parent (f1) : grâce à cette référence, f4 est capable d'appeler une méthodes de f1

De même pour les autres Forms de ton projet, elles doivent avoir une référence sur f1
En général, la Form créatrice passe sa référence à la Form créée ... comme tu l'a fait

Conclusion : ajoute une Property de type Form1 aux Forms qui doivent communiquer avec f1 et passe "this" lors de leur création par f1
0
Rejoignez-nous