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