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

C# Discussion :

Action à la fermeture d'un UserControl


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Décembre 2008
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 30
    Par défaut Action à la fermeture d'un UserControl
    Bonsoir,

    J'ai un UserControl qui contient une datagridview. J'aimerai implementer au sein de ce UserControl la sauvegarde dans un fichier de configuration des paramètres de la DataGridView (ex : largeur des colonnes).
    Je lis le fichier de config et positionne suivant ce qu'il contient dans l'évènement Load du UserControl. Mais je ne sais pas quand faire la sauvegarde (il me faudrait un évènement du style FormClosing pour la Windows Forms). Je vous remercie d'avance pour vos propositions car l'avantage avec ce mode de fonctionnement, tout est intégré dans l'objet et rien à programmer sur les windows forms qui utilise ce control.

  2. #2
    Membre émérite Avatar de ppphil
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    617
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2007
    Messages : 617
    Par défaut
    Ne peux-tu pas enregistrer tes params dans le Dispose du UserControl ?

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2003
    Messages
    311
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 311
    Par défaut
    Il n'y a pas d'évènement OnClose, donc oui, le Dispose est bien adapté pour ça.

    Un truc du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    // Constructeur
    public UserControl()
    {
        Disposed += (s, args) => SaveParams();
    }

  4. #4
    Membre averti
    Inscrit en
    Décembre 2008
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 30
    Par défaut
    Merci pour vos réponses.

    Malheureusement quand on entre dans l'evenement Disposed du UserControl, celà semble trop tard (idem en mettant sur la datagridview du UserControl)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     void UserControlTest_Disposed(object sender, EventArgs e)
            {
                MessageBox.Show(this.Name+" "+DataGridView1.Columns.Count);
            }
    Les 2 fois, le nombre de colonnes est à 0.

    J'ai donc pour l'instant trouvé la solution suivante :

    Je crée une classe DataGridViewPerso qui hérite de la classe DataGridView standard.
    Je défini sur cette classe un evénèment BeforeDispose que je lance au moment du Dispose en overridant la méthode Dispose (qui ne semble pas existé sur le UserControl.

    J'en arrive donc au résultat final :

    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
     
    public class DataGridViewPerso : System.Windows.Forms.DataGridView
        {
            #region Evenement
            public event EventHandler BeforeDispose;
            private void NotifyBeforeDispose(object sender, EventArgs e)
            {
                if (BeforeDispose != null)
                    BeforeDispose(sender, e);
            }
            #endregion Evenement
            #region Constructeur
            public DataGridViewPerso():base()
            {
            }
            #endregion Constructeur
            #region Methode publique
            protected override void Dispose(bool disposing)
            {
                NotifyBeforeDispose(this, new EventArgs());
                base.Dispose(disposing);
            }
            #endregion Methode publique
        }
    Dans mon Constructeur de mon UserControl, je défini l'evenement sur la DataGridViewPerso et je peux implémenter ma sauvegarde à ce moment là.

    Si vous pensez à un truc mieux que celà je suis preneur.

  5. #5
    Membre émérite Avatar de ppphil
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    617
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2007
    Messages : 617
    Par défaut
    Pourquoi mieux ?
    Moi je trouve cela parfait si effectivement il n'y a pas de solution toute faite.
    Bravo !

  6. #6
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    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 197
    Par défaut
    pour un usercontrol dans le fichier designer il y a le void Dispose, essaye à ce moment là, c'est l'appel pour la destruction, l'évènement Disposed est donc levé plus tard
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

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

Discussions similaires

  1. Exécution d'Action et fermeture de popup via un lien
    Par top_eagle dans le forum Struts 1
    Réponses: 9
    Dernier message: 06/05/2009, 11h32
  2. Faire des actions à la fermeture d'une form.
    Par elix63 dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 22/05/2008, 12h39
  3. Action à la fermeture d'une application extérieure
    Par Archimède dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 27/02/2008, 19h36
  4. Action à la fermeture d'une JFrame
    Par Heimdal dans le forum Agents de placement/Fenêtres
    Réponses: 5
    Dernier message: 26/04/2006, 18h24
  5. Exécuter une action à la fermeture d'une fenêtre
    Par wwave dans le forum Servlets/JSP
    Réponses: 12
    Dernier message: 28/07/2005, 15h15

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