Bonjour à tous !


Dans le cadre d'une application je dois faire certains traitements (changements de thèmes) sur les controles composants mes formulaires.

Tous mes formulaires héritent d'une classe MyForm dans laquelle sont effectués ces traitements.
J'y parcours donc la collection de controles de mon form, et, suivant le type de chaque contrôle (identifié grâce a la fonction GetType() ) j'applique ou non le thème spécifié .

ex :
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
 
foreach (System.Windows.Forms.Control Ctrl in this.Controls)
{
	switch (Ctrl.GetType().ToString())
	{
		case "System.Windows.Forms.Panel":
		        //traitement spécifique aux panels
                        break;
 
		case "System.Windows.Forms.GroupBox":
		    //traitement spécifique aux groupboxes
                        break;
		case "System.Windows.Forms.Button":
		   //traitement spécifique aux buttons
                        break;
                default:
			break;
	}
Le problème vient du fait que j'utilise un certain nombre d' UserControls sur lesquels les themes doivent aussi s'appliquer, or les composants devant etre réutilisés il ne me parait pas judicieux de rajouter un test "case" spécifique pour chacun de mes UserConrol, il serait plus intéréssant de n'en rajouter qu'un seul :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
case "System.Windows.Forms.UserControl":
     //traitement spécifique aux user controls
    break;
La où ça coince c'est qu'il faudrais donc qu'un GetType() sur un de mes UserControl ne renvoit pas son type (ex : cntMonControl1) mais le type de son Parent : "System.Windows.Forms.UserControl".

J'ai donc essayé d'overrider GetType() dans mes UserControl mais cela n'est pas permis, de plus un base.GetType() sur un UserControl de type cntMonControl1 ne renvoit pas "System.Windows.Forms.UserControl" mais bien "cntMonControl1"


J'ai donc deux questions :

1 : comment a partir d'une classe fille obtenir le type de mon Parent (ex : si une classe "MyButton" hérite de "System.Windows.Forms.Button", comment obtenir "System.Windows.Forms.Button" depuis un objet de type "MyButton")

2 : comment lorsque j'aurais obtenu le type de mon parent, overrider le GetType() de ma classe fille pour qu'il renvoit le type de la classe parente)
(ex : un GetType() sur une instance de ma classe "MyButton" ne renverrait pas "MyButton" mais "System.Windows.Forms.Button"


Merci d'avance pouyr vos réponses !