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#] Pointeur de classe


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de papouAlain
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 127
    Par défaut [C#] Pointeur de classe
    Dans un eenvironnement MDI, Mes formulaires sont assez complexes. Ils ont nottament un graphisme riche.
    J'avais donc défini une classe Theme pour regrouper tous les aspects graphiques :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public class Theme
    {
    Image BackGround,
    Color TextForeColor,
    etc...
    public Theme ()
    {
    }
    }
    Ce theme est lui même référencé par une classe Context qui regroupe tout ce dont j'ai besoin pour chaque formulaire (accès DB, registry, etc...) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public class Context
    {
    Theme MyTheme,
    etc...
    public Context ()
    {
    }
    }
    J'ai ensuite créé une classe de Formulaire, qui gère tous les aspects communs à tous mes formulaires. Elle fait nottament la mise à jour graphique des formulaires (par exemple au changement de thème). Et pour cela elle utilise Context dans FormRefresh
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public class Formulaire
    {
    Context MyContext,
    etc...
    public void FormRefresh ()
    {
    }
    public Formulaire()
    {
    }
    }
    Tous mes formulaires héritent de Formulaire. Jusque là vous me suivez ???
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public class MyNewForm : Formulaire
    {
    public MyNewForm  (ref Context thisContext) : base (thisContext)
    {
    }
    }
    .
    Tout irait bien ??? Pas du tout ! en environnement MDI, avec multiplication d'ouverture de formulaires enfants, ça explose !!!
    J'aurais aimé pouvoir passer un pointeur à l'instance de la Classe Context, comme ça plus de problème d'occupation massive de la mémoire. Je croyais l'avoir fait en passant
    . Mais comme dans Formulaire j'ai un , ça oblige à instancier la classe à chaque ouverture.
    Comment faire pour n'instancier Context qu'une fois ??? Quelqu'un a t'il une idée ???
    merci

  2. #2
    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
    Par défaut
    Salut !

    A mon avis (mais bon est le matin hein ) il te faut une classe qui n'herite pas de formulaire ...

    Dans ce cas dans la form qui est en MDIParent dans le OnLoad tu instancie Context ok ?

    Après dans le constructeur de Formulaire tu met :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public class Forumlaire
    {
    Context context 
    public Formulaire(Context cont)
    {
     this.context = cont;
    }
     
    }
    Context étant un objet il est automatiquement passé par référence d'accord ?
    Donc quand tu fais un context = cont tu ne fais que copier l'adresse du context de ta feuille MDIParent ok ?

    J'espere avoir été clair ....

  3. #3
    Membre confirmé Avatar de papouAlain
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 127
    Par défaut
    merci pour la rapidité de ta réponse (même si matin !)
    je comprends pas :
    il te faut une classe qui n'herite pas de formulaire
    où est l'interet d'une classe générique de formulaire, dont les formulaires n'hériteraient pas ? je pense ne pas t'avoir bein compris !

    Pour le reste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public Formulaire(Context cont) 
    { 
     this.context = cont; 
    }
    c'est déjà ce que je fais ! Alors d'ou viens mon Memory Overflow ???
    je vois pas...

  4. #4
    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
    Par défaut
    Je m'explique :

    Tu as un formulaire qui sert de base aux feuilles MDI non ?
    Bien donc je parlais de celui la ... il ne doit pas hériter de Forumlaire sinon les feuilles MDI vont réinstancier un objet Context si l'instantiation est dans le constructeur.

    sinon tu peut faire un truc comme ça :
    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
     
    public class Forumlaire
    {
    protected Context context;
     
    public Formulaire()
    {
     
    }
     
    public Formulaire(Context cont)
    {
    this.Context = cont;
    }
     
    protected void InstantContext()
    {
     this.Context = new Context();
    }
     
    }
    tu n'appel qu'une fois la méthode InstantContext() dans ta form principale .

  5. #5
    Membre confirmé Avatar de papouAlain
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 127
    Par défaut
    en guise de réponse, les grands esprits se rencontrent. J'etais exactement en train de faire ce que tu dis, c.a.d, rajouter l'instanciation de Context hors du Constructeur de Formulaire, je vais tester...

    Par contre, dans ton explication, y'a comme du paté dans les neurones ce matin (c'est vrai, c'est encore tôt , allez ! )
    Tu as un formulaire qui sert de base aux feuilles MDI non ?
    Bien donc je parlais de celui la ... il ne doit pas hériter de Forumlaire sinon les feuilles MDI vont réinstancier un objet Context si l'instantiation est dans le constructeur
    .
    Il ne peut héritéer de Formulaire, puisque c'est lui, Formulaire... HiHi !!!
    Merci et tiens moi au courant, si tu as une autre idée...

  6. #6
    Membre confirmé Avatar de papouAlain
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 127
    Par défaut
    ouai ! bien évidemment c'était la bonne solution...

  7. #7
    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
    Par défaut
    Citation Envoyé par papouAlain
    Il ne peut héritéer de Formulaire, puisque c'est lui, Formulaire... HiHi !!!
    Merci et tiens moi au courant, si tu as une autre idée...
    lol
    ok
    Je croyais que tu avez une classe séparé pour ça .

    Bon code

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 15/10/2006, 18h05
  2. Problème de pointeurs sur classe
    Par fabiin dans le forum Delphi
    Réponses: 1
    Dernier message: 05/08/2006, 18h13
  3. Pointeurs de classes et méthodes
    Par insomniak dans le forum C++
    Réponses: 9
    Dernier message: 10/05/2006, 15h18
  4. polymorphisme, pointeurs et classes abstraites
    Par legend666 dans le forum C++
    Réponses: 10
    Dernier message: 02/11/2005, 16h44
  5. Réponses: 3
    Dernier message: 24/04/2005, 14h19

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