Accés méthodes dans un formulaire

Résolu
oliv666 Messages postés 9 Date d'inscription samedi 5 février 2005 Statut Membre Dernière intervention 1 décembre 2006 - 29 nov. 2006 à 15:28
rclsilver02 Messages postés 131 Date d'inscription mercredi 19 mars 2003 Statut Membre Dernière intervention 10 février 2012 - 29 nov. 2006 à 16:31
Bonjour,

Mon problème est le suivant :
J'ai 2 formulaires dans le même espace de nom. Je souhaiterais accéder aux méthodes d'un formulaire à l'autre.
ex :
Form 1
namespace first
{
    public partial class Form1 : Form
    {
             //Mes méthodes public appelés
             public void MethodeAppelée
             {
                   //Mon code;
             }
    }
}

Form2
namespace first

{

    public partial class Form2 : Form

    {

             //Mes méthodes public appelantes
             ex:
             public void appel()
             {
                   first.Form1.MethodeAppelée();
             }

    }

}

Visiblement cette façon de faire ne fonctionne pas !
Quel est la bonne ???

Merci d'avance pour votre réponse.

Oliv

10 réponses

MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
29 nov. 2006 à 15:43
Salut,

Comme dis Bernie666, il te faut appeler cette méthode par le biais d'une instance de Form1.
Sinon, c'est MethodeAppelée qui doit etre static, et pas la classe Form1 ;)

Mx
MVP C# 
3
bernie666 Messages postés 427 Date d'inscription mercredi 1 octobre 2003 Statut Membre Dernière intervention 29 janvier 2008 1
29 nov. 2006 à 15:37
il faut que tu fasse une référence sur ton premier formulaire dans ta form2 ... creer une instance de ta form1 ... ou alors tu gardes comme tu a fais mais tu transforme ta classe form1 en classe statique

++
0
oliv666 Messages postés 9 Date d'inscription samedi 5 février 2005 Statut Membre Dernière intervention 1 décembre 2006
29 nov. 2006 à 15:48
J'ai essayé tes deux solutions mais je n'y parviens toujours pas.
Je t'explique plus en détail :

Ma form1 est un formulaire qui est en fait la fenetre principale de mon appli.
Lorsque je clique sur un bouton (sur la form1) j'instancie la form2 en form2A.
Et j'essaye d'appeler depuis la form2A, une méthode du formulaire principal (qui est déjà instanciée donc...)

J'espère que c'est suffisamment clair...
0
oliv666 Messages postés 9 Date d'inscription samedi 5 février 2005 Statut Membre Dernière intervention 1 décembre 2006
29 nov. 2006 à 15:51
OK ça fonctionne finalement.
en transformant la méthode public void MethodeAppelée() en public static void MethodeAppelée()

Merci à vous deux !
0

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

Posez votre question
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
29 nov. 2006 à 15:57
C'est malheureusement le type de question qui revient trop souvent.
Tu trouveras tout ce qu'il te faut ici

http://www.csharpfr.com/infomsg_RECUPERER-CONTENU-TEXTBOX-SUR-AUTRE-FORME_846983.aspx#10

Mx
MVP C# 
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
29 nov. 2006 à 15:59
Ah, j'avais pas vu ta réponse le temps de chercher l'autre topic.
Si le fait que la méthode soit statique te convienne, alors ca route

Mx
MVP C# 
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 60
29 nov. 2006 à 16:00
Ca sent le passage de paramètres par ici
Mx> C'est déjà Noël ?

<hr size="2" />-Blog-
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
29 nov. 2006 à 16:13
Mx il fête Noel le 24 Novembre pour avoir ses cadeaux plus vite.
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
29 nov. 2006 à 16:20
J'ai pas de date fixe, je met mon bonnet quand il fait froid

Mx
MVP C# 
0
rclsilver02 Messages postés 131 Date d'inscription mercredi 19 mars 2003 Statut Membre Dernière intervention 10 février 2012
29 nov. 2006 à 16:31
Tu as dans Application.OpenForms une collection des fenetres instanciées. il te suffit, dans l'hypothese qu'une seule forme par type est instanciée, de parcourrir ta collection et de trouver la feuille qui corresponds a la classe form recherchée... je m'expliqe avec un exemple :

public partial class Form1 : Form

{
   // le reste du code...
  
   public Form2 GetForm2()
   {
       FormCollection forms =
Application.OpenForms;
      
int i;
      
for (i = 0; i < forms.Count; ++i)
      {
        
if (forms[i]
is
Form2)
        {
           return forms[i];
        }
      }

     return null;
   }
}

Ceci est une premiere méthode pas tres propre et tout...

Voici la seconde...

tu passe un pointeur de la form en constructeur

tu aurais par exemple

public class Form1 : Form
{
 //...
  private Form2 f2;

 public Form1(Form2 f2) {this.f2 = f2; }

}

et

public class Form2 : Form
{
 //...
  private Form1 f1;

 public Form1(Form1 f1) {this.f1 = f1; }

}

tu peux y ajouter des proprietés get/set pour définir les références
et ensuite tu construis : Form1 f new Form1(null); Form2 f2 new Form2(f1);
et avec l'accesseur par exemple : f.Form2 = f2;

voila.. j'espere que j'ai été clair...
0
Rejoignez-nous