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 :

[MDI] A quel endroit utilise-t-on Dispose() ?


Sujet :

Windows Forms

  1. #1
    Membre éprouvé Avatar de freud
    Homme Profil pro
    Développeur
    Inscrit en
    Mai 2002
    Messages
    1 271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 271
    Par défaut [MDI] A quel endroit utilise-t-on Dispose() ?
    Bonsoir,

    J'aimerais savoir à quel endroit mettons le Dispose() pour tuer une instansciation d'une form parce que avec mon code je n'arrive pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     If fListeUsager Is Nothing Then
                fListeUsager = New frmListeUsager
                fListeUsager.MdiParent = Me
                fListeUsager.Show()
            Else
                fListeUsager.WindowState = FormWindowState.Normal
     
            End If
    Normalemment je dois le mettre juste aprés le show() mais ca marche pas.
    Je vous remercie.

  2. #2
    Membre Expert Avatar de LaChips
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    1 109
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 109
    Par défaut
    Bonjour,

    En fait tu peux faire le .Dispose() sur l'événement FormClosed() de ton formulaire ouvert.

  3. #3
    Membre éprouvé Avatar de freud
    Homme Profil pro
    Développeur
    Inscrit en
    Mai 2002
    Messages
    1 271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 271
    Par défaut
    merci LaChips je l'ai déjà essayer et je viens de le ressayer dans le FormClosed()
    pour enlever les doutes mais ca marche pas . Lorsque je ferme la fenetre par la croix et en faisant le pas à pas (touche F10) je vois qu'en testant le :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    If fListeUsager Is Nothing Then
    fListeUsager n'est pas Nothing alors que normalement elle devrait l'être.

  4. #4
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    Pourquoi tiens-tu à appeler Dispose sur ton formulaire ?
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  5. #5
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    tant que tu es dans le code de la feuille celle ci ne peux pas etre à nothing sinon tu ne serais pas dedans

    enfin à mon avis tu cherches à comprendre quelque chose qui n'existe pas

    parce que dispose sert à vider la mémoire utilisée par un objet
    mettre à nothing sert à vider la mémoire utilisée par le pointeur qui pointe vers un objet
    si on met à nothing un objet qui n'a pas été disposé, le GC le "disposera" plus tard
    si tu fais dim f as new form1
    f.show
    tu n'as pas à t'inquiéter du dispose
    quand tu clic sur la croix la fenetre sera disposée
    quand à la variable f, si tu as fait un dim dans une sub, à la fin de la sub f est hors portée et est donc mis à nothing
    mais l'objet continue à vivre meme si une référence qui pointait sur lui est mise à nothing vu que c'est dispose qui tue l'objet et non de le mettre à nothing
    d'ailleurs pour un objet tu peux avoir plusieurs variables qui pointent dessus
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  6. #6
    Membre éprouvé Avatar de freud
    Homme Profil pro
    Développeur
    Inscrit en
    Mai 2002
    Messages
    1 271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 271
    Par défaut
    bonjour,

    en fait ma difficulté provenait du fait que lorsque la fenetre est réduite en icone et que l'utilisateur affiche la fenetre par le menu comme pour la 1ere fois alors que celle-ci est réduite il fallait passer par un test pour eviter de la recreer et l'autre difficulté c'est lorsqu'on ferme la fenetre en cliquant sur le bouton croix et dans le code que j'ai poster au debut le test passe directement vers:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    fListeUsager.WindowState = FormWindowState.Normal
    En effet je cherche peut-être quelque chose qui n'existe pas,que je comprend mal, je ne savais pas quoi mettre dans le test pour savoir si la form a été fermer en tous cas j'ai un semblant de solution celle-ci est apparu dans un autre post dans le forum :

    http://www.developpez.net/forums/sho...91#post2640791

    et ca fonctionne bien apparement mais je sens que le code n'est pas propre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    If fListeUsager.Disposing = False Then
                If fListeUsager.WindowState = FormWindowState.Minimized Then
                    fListeUsager.WindowState = FormWindowState.Normal
                    Exit Sub
                End If
                fListeUsager = New frmListeUsager
                fListeUsager.MdiParent = Me
                fListeUsager.Show()
            Else
                If fListeUsager.WindowState = FormWindowState.Minimized Then
                    fListeUsager.WindowState = FormWindowState.Normal
                End If
            End If

  7. #7
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    sinon je ne vois pas l'utilité d'avoir 2 threads d'ouvert pour parler de la meme chose avec les meme personnes
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  8. #8
    Membre éprouvé Avatar de freud
    Homme Profil pro
    Développeur
    Inscrit en
    Mai 2002
    Messages
    1 271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 271
    Par défaut
    désolé sperot51 j'avais ouvert ce thread précipatement lorsque dans l'autre thread j'avais mis résolu pensant que le probleme etait définitement regler parce que je n'avais pas fais entierement mes tests et comme d'autres on répondu je ne voulais laisser ca sans réponse.
    Mille excuses.

Discussions similaires

  1. [JEditorPane] Quel listener utiliser?
    Par Pill_S dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 27/07/2004, 13h32
  2. [Parser HTML] quel parser utiliser pour du HTML 4.0 ?
    Par Cyber@l dans le forum API standards et tierces
    Réponses: 5
    Dernier message: 19/07/2004, 19h32
  3. [Debutant(e)]Quel composant utiliser pour faire une grille
    Par elitost dans le forum Composants
    Réponses: 7
    Dernier message: 21/06/2004, 20h44
  4. Réponses: 3
    Dernier message: 27/08/2003, 21h14
  5. Réponses: 2
    Dernier message: 11/07/2002, 08h31

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