Salut à tous,

Voici un problème probablement assez pointu.
(Application Winform, framework 3.5, éventuellement compatible 2.0 mais c'est pas obligé)

Soit un certain nombre de type de contrôle différents mais ayant tous en commun une propriété nommé ProprieteMagique. Tous ces contrôles héritent de la classe générique Control, et font partis de mon écran :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
        Dim A As New MonTypeCtrl1
        Dim B As New MonTypeCtrl2
        Dim C As New MonTypeCtrl3
        Dim .....
 
        Me.Controls.AddRange(New Control() {A, B, C, ....})
J'ai besoin de modifier cette propriété sur l'ensemble des contrôles sans forcément en gérer leur type. L'idée est de faire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
        For Each ctrl As Control In Me.Controls
            ctrl.ProprieteMagique = MaNouvelleValeur
        Next
Bien évidemment cela ne marche pas. ProprieteMagique n'est pas une propriété de Control, mais d'une des classes dérivées

Pourtant la variable ctrl, bien que de type Control, contient un objet d'un des types qui gèrent cette propriété. Comment je peux donc accéder à cette propriété à travers la variable Control ???
(Gérer le type des contrôles n'est pas trop envisageable, car il y déjà plus d'une dizaine de type, et c'est pas fini)

L'idée serait (peut-être) de pouvoir faire quelque chose du genre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
ctrl.PropertyByName("ProprieteMagique")
Je n'imagine pas que ce ne soit pas possible en .Net d'autant plus que ça existe en standard dans d'autres langages Objet, mais je n'arrive pas à trouver un soupçon de solution dans le framework.
Ça me semble pourtant être une fonctionnalité de base en POO