IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

[C#] [WinForms] Passage de fenetres... [FAQ]


Sujet :

Windows Forms

  1. #1
    Nouveau membre du Club

    Inscrit en
    Novembre 2002
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 50
    Points : 37
    Points
    37
    Par défaut [C#] [WinForms] Passage de fenetres...
    C'est tout bete, mais la je suis embete...
    Je m'excuse d'avance de poser cette question...

    J'ai 2 fenetres Form1 et Form2...
    Lorsque j'appuie sur le bouton Submit de la fenetre 1, je veux que celle ci se ferme et que Form2 s'ouvre (a condition de bon password, mais ca on s'en fou pour l'instant...)

    Voila le code du bouton Submit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    private void btnSubmit_Click(object sender, System.EventArgs e)
    {
    	Form2 f = new Form2();
    	this.Dispose();
    	//this.Hide();
    	f.Show();
    	//GC.Collect();
    }
    Et la il me ferme toute l'appli...
    Forcement si je commente la ligne Dispose et uncomment la ligne Hide, ca cache la fenetre mais ne la decharge pas de la memoire...

    En fait je voudrais l'equivalent VB6 de

    [Tag [VB.NET] ajouté par freegreg]
    [Pensez-y, vous-même, la prochaine fois. Merci ]

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 52
    Points : 48
    Points
    48
    Par défaut
    Si tu fait un dispose de ta form1, et que ton Main() est dedans, je suppose que ca va causer quelques problèmes

    Sinon, essaie un .Close()
    "Seules deux choses sont infinies : l'univers et la bétise humaine... Quoique je ne suis pas tout à fait sûr pour l'univers..."
    -Albert Einstein-
    Pensez au tag RESOLU !!!

  3. #3
    Nouveau membre du Club

    Inscrit en
    Novembre 2002
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 50
    Points : 37
    Points
    37
    Par défaut
    Ah merci mais le resultat est le meme...
    En fait c'est la fenetre de login, donc je veux pas la laisser ouverte apres identification!
    A moins que dans le pays des inteligents, il existe une meilleure methode...

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 52
    Points : 48
    Points
    48
    Par défaut
    Ben moi, ce que je ferai, c'est faire une classe qui contient la méthode main.
    Dans main tu lances ta fenetre de login Si c'est OK, ton main s'occupe de lancer ta form2.
    Mais ce n'est pas login qui doit lancer Form2 !!
    Si tu dispose ta denetre de login, la form2 etant seulement connu de Form1 (ton login) ben le garbage collector doit la détruire car il la considère comme non utilisée.
    Ca doit etre un truc comme ca l'explication
    "Seules deux choses sont infinies : l'univers et la bétise humaine... Quoique je ne suis pas tout à fait sûr pour l'univers..."
    -Albert Einstein-
    Pensez au tag RESOLU !!!

  5. #5
    Nouveau membre du Club

    Inscrit en
    Novembre 2002
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 50
    Points : 37
    Points
    37
    Par défaut
    OK, je vais faire ca, mais j;aurais une question dans ce cas (peut etre stupide...) QUand est ce que tu close ton main, i.e. tu fermes l'application??? Le main se fermera tout seul si toutes les fenetres sont fermes???

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 52
    Points : 48
    Points
    48
    Par défaut
    Ben en quelques sorte. Je pense que quand les objets sont 'disposed' ben ca se ferme.

    Mais ATTENTION ! Je ne suis pas sur de ce que j'avance !
    Si quelqu'un peux confirmer ou infirmer ce que je dis, Welcome
    "Seules deux choses sont infinies : l'univers et la bétise humaine... Quoique je ne suis pas tout à fait sûr pour l'univers..."
    -Albert Einstein-
    Pensez au tag RESOLU !!!

  7. #7
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Cette fenetre où tu parle de password, c'est la premiere fenetre de ton appli ? une sorte de fenetre d'identification ? si oui, tu ne peux pas faire un .Close(), sinon, c'est normal qu'il ferme tout, car tu lui dit de fermer la fenetre "principale" (la main form)


    Ayant deja eu le même problèmùe, je me suis contenté de faire un Hide(), n'ayant pas eu le tps de recherché plus.

  8. #8
    Nouveau membre du Club

    Inscrit en
    Novembre 2002
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 50
    Points : 37
    Points
    37
    Par défaut
    Oui Morpheus, si tu regarde mon premier message, c'est exactement ce que je fais... Mais comment tu "tue" ton appli a la fin vu qu'elle est toujours en memoire????

  9. #9
    Nouveau membre du Club

    Inscrit en
    Novembre 2002
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 50
    Points : 37
    Points
    37
    Par défaut
    Un autre truc, j'ai cree une classe MyStart.cs avec une methode start...
    DOnc je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    static void Main()
    {
    	Form1 f = new Form1();
    	Application.Run(f);
    }
    Et dans le code de mon bouton,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Form2 f = new Form2();
    //this.Dispose();
    f.Show();
    this.Dispose();
    //this.Close();
    //GC.Collect();
    Mais ca me donne le meme resultat que tout a l'heure...
    Je suis vraiment dans le flou la...

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 52
    Points : 48
    Points
    48
    Par défaut
    Citation Envoyé par Tranber
    Ben moi, ce que je ferai, c'est faire une classe qui contient la méthode main.
    Dans main tu lances ta fenetre de login Si c'est OK, ton main s'occupe de lancer ta form2.
    Mais ce n'est pas login qui doit lancer Form2 !!
    Si tu dispose ta denetre de login, la form2 etant seulement connu de Form1 (ton login) ben le garbage collector doit la détruire car il la considère comme non utilisée.
    Ca doit etre un truc comme ca l'explication
    Je me cite môa même
    "Seules deux choses sont infinies : l'univers et la bétise humaine... Quoique je ne suis pas tout à fait sûr pour l'univers..."
    -Albert Einstein-
    Pensez au tag RESOLU !!!

  11. #11
    Nouveau membre du Club

    Inscrit en
    Novembre 2002
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 50
    Points : 37
    Points
    37
    Par défaut
    Parfaitement d'accord avec toi...en theorie...
    Mais je trouve cela complique et puis si tu te cite, je fais pareil:
    Mais comment tu "tue" ton appli a la fin vu qu'elle est toujours en memoire????

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 52
    Points : 48
    Points
    48
    Par défaut
    Test donc, une fois tout détruit, ca devrait fermer ton appli.
    Sinon, tu fait un Application.Exit(); et ca fermera ton appli.
    "Seules deux choses sont infinies : l'univers et la bétise humaine... Quoique je ne suis pas tout à fait sûr pour l'univers..."
    -Albert Einstein-
    Pensez au tag RESOLU !!!

  13. #13
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    je pense que c'est le this.Dispose qui te pose un problème, laisse le Hide et commente le dispose pour voir...
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 52
    Points : 48
    Points
    48
    Par défaut
    Il l'a déjà fait plus haut swoog
    "Seules deux choses sont infinies : l'univers et la bétise humaine... Quoique je ne suis pas tout à fait sûr pour l'univers..."
    -Albert Einstein-
    Pensez au tag RESOLU !!!

  15. #15
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    j'avais pas l'impression, j'ai relu le POST, et il ne me semble pas qu'il ait été question de virer le Dispose à un moment ou un autre, mais j'ai peut-être les yeux mals tournée dans les orbites....
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  16. #16
    Rédacteur
    Avatar de abelman
    Inscrit en
    Février 2003
    Messages
    1 106
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 1 106
    Points : 2 629
    Points
    2 629
    Par défaut
    Il faut ouvrir la form qui a le bouton submit en modal.
    Exple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    		static void Main() 
    		{
    			Form2 frmlogin = new Form2();
    			if (frmlogin.ShowDialog() == DialogResult.OK)
    			{
    				// Checker si ton password est OK ici. 
    				// Exple if (frmlogin.pwdOk == true). pwdOk étant une propriété mise à true dans le bouton Ok de frmlogin si nécéssaire.
    				Application.Run(new Form1());
    			}
    		}
    Form1 est la form principale.
    Form2 a le bouton Submit. Ici OK. Il faut mettre au bouton submit la propriété Dialogresult à OK. En général quand on a un bouton OK on a aussi un bouton cancel.

    Exple tiré de form2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    			// 
    			// buttonOk
    			// 
    			this.buttonOk.DialogResult = System.Windows.Forms.DialogResult.OK;
    			this.buttonOk.Location = new System.Drawing.Point(218, 140);
    			this.buttonOk.Name = "buttonOk";
    			this.buttonOk.Size = new System.Drawing.Size(70, 24);
    			this.buttonOk.TabIndex = 0;
    			this.buttonOk.Text = "Ok";
    			// 
    			// buttonCancel
    			// 
    			this.buttonCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
    			this.buttonCancel.Location = new System.Drawing.Point(140, 140);
    			this.buttonCancel.Name = "buttonCancel";
    			this.buttonCancel.Size = new System.Drawing.Size(74, 24);
    			this.buttonCancel.TabIndex = 1;
    			this.buttonCancel.Text = "Cancel";

  17. #17
    DrQ
    DrQ est déconnecté
    Membre expérimenté
    Avatar de DrQ
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 388
    Points : 1 515
    Points
    1 515
    Par défaut
    1er point : Crée une classe Program.cs qui contient ton Main (Pour info c'est ce qui sera fait automatiquement sous Widbey et c'est pas plus bête).

    2e point : Comme abelman l'a dit dans ton Main tu ne doit pas faire un Application.Run(..) sur ton formulaire de connexion car ce n'est pas ta fenêtre principale de ton application.

    3e point : le Main s'arrête si le formulaire donné dans le Application.Run se ferme (à moins que derrière il y est une boucle ou un autre appel biensûr)



    Par rapport à abelman je ferai le Check dans frmLogin.

    frmLogin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    private void btnOK_Click(object sender, System.EventArgs e) {
        if (CheckPassword()) {
            this.DialogResult = DialogResult.OK;
        } else {
            this.DialogResult = DialogResult.Abort;
        }
        this.Close();
    }
     
    private void btnUndo_Click(object sender, System.EventArgs e) {
        this.DialogResult = DialogResult.Cancel;
        this.Close();
    }
    Dans le Main :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    static void Main() 
    {
    	frmLogin f = new frmLogin();
    	DialogResult r = f.ShowDialog();
     
    	if (r == DialogResult.Abort) {
    		MessageBox.Show("Connexion échouée");
    	} else if (r == DialogResult.Cancel) {
    		MessageBox.Show("Connexion annulée");
    	} else {
    		Application.Run(new Form2());
    	}
    }
    1)http://www.developpez.com/cours/
    2)Recherche
    3)Posez votre question en suivant les règles
    _oOo-DrQ-oOo_

  18. #18
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Vous solutions sont très bien mais dnas ces cas là, les form de login resteront toujours en mémoire (ce qu'il veut eviter si j'ai bien compris son besoin)

  19. #19
    Nouveau membre du Club

    Inscrit en
    Novembre 2002
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 50
    Points : 37
    Points
    37
    Par défaut
    J'ai deja essaye d'enlever le Dispose et de laisser le Hide, mais comment tu fais pour le retrouver et tuer???

  20. #20
    Rédacteur
    Avatar de abelman
    Inscrit en
    Février 2003
    Messages
    1 106
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 1 106
    Points : 2 629
    Points
    2 629
    Par défaut
    Citation Envoyé par morpheus
    Vous solutions sont très bien mais dnas ces cas là, les form de login resteront toujours en mémoire (ce qu'il veut eviter si j'ai bien compris son besoin)
    Elle n'est plus en mémoire avec l'exemple de DrQ puisqu'il fais un Close

    lololefada ... tu as essayé ça ?

Discussions similaires

  1. Utiliser UserControl WinForm dans une fenetre WPF
    Par AliaAtreides dans le forum VB.NET
    Réponses: 2
    Dernier message: 14/01/2013, 17h08
  2. WinForms : Passage d'attributs
    Par Gibou dans le forum C#
    Réponses: 5
    Dernier message: 16/01/2008, 16h33
  3. [C#] Winforms passage de données...
    Par T0xF0x dans le forum Windows Forms
    Réponses: 7
    Dernier message: 07/12/2005, 09h14
  4. [algo] enchainement de fenetre et passage d'info
    Par MrDuChnok dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 26/03/2005, 11h24
  5. Réponses: 2
    Dernier message: 24/11/2004, 10h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo