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#] Form : Quelles méthodes ? Close, Dispose, Show, Hide


Sujet :

Windows Forms

  1. #1
    Membre expérimenté

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    219
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2004
    Messages : 219
    Points : 1 655
    Points
    1 655
    Par défaut [C#] Form : Quelles méthodes ? Close, Dispose, Show, Hide
    Bonjour,

    Je débute je faisais du Java avant

    Je voudrais savoir quelle est la différence entre le Close et le Dispose.
    Pourquoi après un dispose je ne peux pas faire un show (comme en java : setVisible(true)) ?
    Après un dispose il faut refaire un new MaFentre() ?


    Voila un peu de mon code :
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
        partial class APropos : Form
        {
            private void okButton_Click(object sender, EventArgs e)
            {
                this.Close();
                // this.Dispose(); ?
                // this.Hide(); ?
            }
        }
     
        public partial class Emma : Form
        {
            private APropos apropos = null;
     
            public Emma()
            {
                InitializeComponent();
            }
     
            private void quitterToolStripMenuItem_Click(object sender, EventArgs e)
            {
                this.Dispose();
                // this.Close(); ?
            }
     
            private void aproposToolStripMenuItem_Click(object sender, EventArgs e)
            {
                if (apropos == null || apropos.IsDisposed) // comme ca ?
                {
                    apropos = new APropos();
                    apropos.Show();
                }
                else
                {
                    apropos.Show();
                    apropos.Focus();
                }
            }
        }

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    410
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 410
    Points : 361
    Points
    361
    Par défaut Re: Form : Close, Dispose, Show, Hide
    Citation Envoyé par TheSeb
    Après un dispose il faut refaire un new MaFentre() ?
    ouaip, je crois que le dispose kill ta classe et libère la mémoire allouée pour ta classe, ce que ne fais pas le close().

  3. #3
    jab
    jab est déconnecté
    Rédacteur
    Avatar de jab
    Homme Profil pro
    SharePoint developpeur
    Inscrit en
    Février 2004
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : SharePoint developpeur
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 1 173
    Points : 4 339
    Points
    4 339
    Par défaut Re: Form : Close, Dispose, Show, Hide
    Citation Envoyé par reptils
    Citation Envoyé par TheSeb
    Après un dispose il faut refaire un new MaFentre() ?
    ouaip, je crois que le dispose kill ta classe et libère la mémoire allouée pour ta classe, ce que ne fais pas le close().
    C'est bien cela Close ferme la fenêtre mais l'objet reste actif, alors que dispose à pour but de "détruire" l'objet.

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    219
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2004
    Messages : 219
    Points : 1 655
    Points
    1 655
    Par défaut
    Merci.
    Et la différence entre un close et un hide alors ?
    car faire un show sur la fenêtre apres un close cela ne marche pas!

  5. #5
    jab
    jab est déconnecté
    Rédacteur
    Avatar de jab
    Homme Profil pro
    SharePoint developpeur
    Inscrit en
    Février 2004
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : SharePoint developpeur
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 1 173
    Points : 4 339
    Points
    4 339
    Par défaut
    Comme son nom l'indique Hide cache la fenêtre mais elle existe toujour et est toujours ouverte. Hide revient à mettre la propriété Visible à false. Close ferme la fenêtre mais l'objet existe et ses propriétés son encore accessibles.

  6. #6
    Rédacteur
    Avatar de dev01
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 451
    Points : 6 017
    Points
    6 017
    Par défaut Re: Form : Close, Dispose, Show, Hide
    Citation Envoyé par jab
    Citation Envoyé par reptils
    Citation Envoyé par TheSeb
    Après un dispose il faut refaire un new MaFentre() ?
    ouaip, je crois que le dispose kill ta classe et libère la mémoire allouée pour ta classe, ce que ne fais pas le close().
    C'est bien cela Close ferme la fenêtre mais l'objet reste actif, alors que dispose à pour but de "détruire" l'objet.
    Salut !

    Es tu sur de ça ?
    Je crois close cache la fenetre et appel dispose après .
    Il faudrait vérifier mais je crois que j'ai eu des pb comme ça avec un appel à close qui en fait libere ta fenetre .
    - MVP C#
    -Tout problème a une solution, le vrai problème est de trouver la solution .....
    - Linux & mono : l'avenir

  7. #7
    jab
    jab est déconnecté
    Rédacteur
    Avatar de jab
    Homme Profil pro
    SharePoint developpeur
    Inscrit en
    Février 2004
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : SharePoint developpeur
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 1 173
    Points : 4 339
    Points
    4 339
    Par défaut Re: Form : Close, Dispose, Show, Hide
    Citation Envoyé par dev01

    Salut !

    Es tu sur de ça ?
    Je crois close cache la fenetre et appel dispose après .
    Il faudrait vérifier mais je crois que j'ai eu des pb comme ça avec un appel à close qui en fait libere ta fenetre .
    Tu as peux être raison, je me demande si le Close n'appelle pas le dispose. Du moins c'est ce que dit la doc. Toutefois, j'ai fais un essai, dans une méthode, je fais un close et après dans la procédure qui a appelé la fenêtre, j'accède toujours aux propriétés

    Idem, quand tu cliques sur le bouton qui fait l'accept, la méthode closing est appelée d'ou il fait un close et pourtant après, l'objet existe toujours

  8. #8
    Membre expérimenté

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    219
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2004
    Messages : 219
    Points : 1 655
    Points
    1 655
    Par défaut
    Est-il possible de réafficher la fenêtre après un close ?

  9. #9
    jab
    jab est déconnecté
    Rédacteur
    Avatar de jab
    Homme Profil pro
    SharePoint developpeur
    Inscrit en
    Février 2004
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : SharePoint developpeur
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 1 173
    Points : 4 339
    Points
    4 339
    Par défaut
    Citation Envoyé par TheSeb
    Est-il possible de réafficher la fenêtre après un close ?
    Je ne pense pas.

  10. #10
    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
    Citation Envoyé par jab
    Citation Envoyé par TheSeb
    Est-il possible de réafficher la fenêtre après un close ?
    Je ne pense pas.
    En effet, en faisant un Close, tu appelles Dispose donc à moins de faire à nouveau un new (et donc instancié un nouvel objet), tu ne peux pas.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Lazarus] Quelle méthode pour dupliquer des Forms
    Par Invité dans le forum Lazarus
    Réponses: 3
    Dernier message: 20/07/2012, 09h07
  2. [C#] Quelle méthode pour imprimer un form?
    Par Bapt.ice dans le forum Windows Forms
    Réponses: 2
    Dernier message: 18/07/2006, 19h49
  3. Réponses: 4
    Dernier message: 05/06/2005, 14h05
  4. [persistance]Quelle méthode utiliser ?
    Par le Daoud dans le forum Persistance des données
    Réponses: 9
    Dernier message: 15/11/2004, 09h29
  5. code récurrent, quelle méthode utiliser ?
    Par khayyam90 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 10/10/2004, 15h03

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