Explication commande d'ouverture seconde Form

Angelssen Messages postés 9 Date d'inscription lundi 14 décembre 2009 Statut Membre Dernière intervention 21 janvier 2010 - 13 janv. 2010 à 16:41
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 - 14 janv. 2010 à 17:36
Bonjour en cherchant a ouvrir une 2eme form j ai trouver ma solution mais je ne comprends son fonctionnement quelqu'un pourrait il m'eclairer sur le pourquoi du comment?
GenF est lenom de ma Form2 evidemment

Ce code marche :

GenF Form2 = new GenF();
Form2.Show();


mais la logique semblerait de plutot faire ceci qui pourtant ne fonctionne pas

Form2 GenF = new Form2();
GenF.Show();

4 réponses

Moomoon07 Messages postés 223 Date d'inscription mercredi 31 mai 2006 Statut Membre Dernière intervention 5 mai 2014
13 janv. 2010 à 17:11
Salut !

Dans ton premier cas, ce n'est pas un form que tu crée, mais un objet de type GenF, nommé Form2.

Dans ton deuxième cas, ce n'est pas un form que tu crée, mais un objet de type form2 nommé GenF.
Form2 hérite peut être de Form ? Dans ce cas, il hérite aussi de ses méthodes + attributs :
public partial class Form2 : Form
{
public Form2()
{
}
}

Si tu veux un form :

Form F = new Form()
F.Show();

A+
0
Angelssen Messages postés 9 Date d'inscription lundi 14 décembre 2009 Statut Membre Dernière intervention 21 janvier 2010
13 janv. 2010 à 17:45
Salut, c est ce que j essayais de dire en fait avec le code que tu m as donner et qui correspond a mon 2eme exemple ca fonctionne mais pas vraiment car la forme s ouvre mais sans afficher de contenu alors qu avec le premier exemple ca fonctionne parfaitement .. mais je ne comprends pas pourquoi justement ;)
0
Moomoon07 Messages postés 223 Date d'inscription mercredi 31 mai 2006 Statut Membre Dernière intervention 5 mai 2014
14 janv. 2010 à 11:22
Un objet de type Form est simplement un conteneur.
Si l'objet que tu veux créer possède du contenu, c'est certainement un objet qui hérite de Form.

Exemple :
public partial class Form2 : Form
{
private int Nb_Boutons;

public Form2(int N)
{
this.Nb_Boutons = N;
}

}

Dans cet exemple Form2 hérite de la classe Form.
C'est certainement un objet de type Form2 que tu veux instancier.

Dans ce cas :

Form2 F = new Form2(5);
F.Show();  
0
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 49
14 janv. 2010 à 17:36
Salut

Le fonctionnement des fenêtres est généralement assez déroutant au début.
Quand on programme de l'orienté objet, on a l'habitude de faire un truc du genre :
// Code ne servant que d'exemple 
// (ne fonctionne évidemment pas car les classes n'existent pas)
Fenetre maFenetre = new Fenetre();
maFenetre.MettreUnBoutonIci();
maFenetre.MettreUnBoutonLà();
//...


Mais cependant, ce n'est généralement pas comme ça qu'on crée des fenêtres.
En fait, on crée une classe qui hérite de fenêtre qui place tous les éléments de la fenêtre. Puis on instancie cette classe de fenêtre perso sous forme d'un objet :

class MaClasseFormPerso : Form
{
    public MaClasseFormPerso()
    {
        InitializeComponent();
        // Cette méthode (générée automatiquement par le mode design)
        // permet de placer les composants dans ta fenêtre lors de son instanciation
        // (Puisqu'on se trouve dans le constructeur)
    }
}

Et donc, quand tu voudras créer une fenêtre de type maClasseFormPerso :
MaClasseFormPerso monObjetFenetre = new MaClasseFormPerso();
monObjetFenetre.Show();
// L'intérêt est que tu peux créer plusieurs pages ayant exactement la même interface :
MaClasseFormPerso monAutreObjet = new MaClasseFormPerso();
monAutreObjet.Show();
// Là, tu auras 2 fenêtres indépendantes (puisque 2 objets différents)
// Mais qui auront la même apparence (puisque classe identique)


Donc si tu dis que ça ça marche :
GenF Form2 = new GenF();
Form2.Show();

C'est que tu as créé une CLASSE GenF qui hérite de Form, et que tu as créé un objet (que tu as appelé Form2) qui instancie cette fenêtre.
Si tu t'embrouilles, c'est qu'il faut que tu donnes de meilleurs noms.
Dans ce code :
GenF est le TYPE de ta fenêtre
Form2 est un nom que tu donnes à ton OBJET, ta fenêtre en elle-même.

Exemple de meilleur nom (un peu long mais c'est pour que tu comprennes bien) :
FenetreLogin loginALOuvertureDeLApplication = new FenetreLogin();
loginALOuvertureDeLApplication.Show();


Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -
0
Rejoignez-nous