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 :
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
10 public class Theme { Image BackGround, Color TextForeColor, etc... public Theme () { } }
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 public class Context { Theme MyTheme, etc... public Context () { } }
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
8
9
10
11
12 public class Formulaire { Context MyContext, etc... public void FormRefresh () { } public Formulaire() { } }
.
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
Code : Sélectionner tout - Visualiser dans une fenêtre à part ref Context MyContext
, ça oblige à instancier la classe à chaque ouverture.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Context MyContext
Comment faire pour n'instancier Context qu'une fois ??? Quelqu'un a t'il une idée ???
merci
Partager