Vianneyp
Messages postés82Date d'inscriptionjeudi 6 juillet 2006StatutMembreDernière intervention 6 janvier 2010
-
24 nov. 2008 à 12:13
Vianneyp
Messages postés82Date d'inscriptionjeudi 6 juillet 2006StatutMembreDernière intervention 6 janvier 2010
-
24 nov. 2008 à 19:42
(Re)Bonjour,
J'ai un peu (beaucoup ?) de mal avec les classes et je souhaiterai vous poser quelques questions.
J'ai créer une classe dérivée de TabPage,que j'ai appelé ClsTab et ce dans le but de pouvoir charger un "modèle d'onglet" dans un TabControl.
Je procède de la maniéré suivante :
Dim NewTab As New ClsTab
TabControl1.TabPages.Add(NewTab )
L'onglet est ajouté sans aucun probléme.
Voici donc me première question : par quel miracle est-ce que j'arrive a ajouter ma classe ClsTab au TabControl en utilisant sa méthode add alors qu'aucune surcharge n'est prévue pour gérer le type ClsTab ? Est-ce qu'il y a "conversion" ?
C'est la même chose dans l'autre sens :
TabControl.TabPages(index As Integer) As System.Windows.Forms.TabControl
L'instruction : MsgBox TabControl1.TabPages(0).name affiche le nom du 1er onglet du TabControl,qui est aussi le nom donnée a chaque instance de ma classe ClsTab.Mon onglet est donc bien du type ClsTab et non du type TabPage.Le encore je ne comprend pas comment on passe de ClsTab a System.Windows.Forms.TabControl.D'ailleurs,en utilisant cette méthode,je n'ai accès qu'aux propriétés/méthodes communes a ClsTab et TabControl.
Merci d'avance pour ces quelques éclaircissements.
nhervagault
Messages postés6063Date d'inscriptiondimanche 13 avril 2003StatutMembreDernière intervention15 juillet 201137 24 nov. 2008 à 14:17
Salut,
C'est le principe de l'héritage en programmation objet.
Tu as un objet dont tu peux dériver pour ajouter des proprietes evenemet, ...
et il herite des proprietes de son parent
TabControl1.TabPages(0).name --> le name de tabpages stocke dans le parent
directcast(TabControl1.TabPages(0),gettype(ClsTab )).manouvelleprop --> la valeur de manouvelleprop
Il faut utiliser un cast pour aller sur l'enfant dans ce cas.
Il est conseillé de verifier si tu es bien dans le type ClsTab
Car rien empeche de faire
ClsTab
ClsTab1
ClsTab2
Dim NewTab1 As New ClsTab1
TabControl1.TabPages.Add(NewTab1 )
Dim NewTab2 As New ClsTab2
TabControl1.TabPages.Add(NewTab2 )
Et dans cas tu as trois type d'objet
donc TabControl1.TabPages(0).name --> fonctionnera toujours
fonctionnera que pour ClsTab
directcast(TabControl1.TabPages(0),gettype(ClsTab )).manouvelleprop
Kevin.Ory
Messages postés840Date d'inscriptionmercredi 22 octobre 2003StatutMembreDernière intervention 7 janvier 200911 24 nov. 2008 à 17:00
Salut,
Même si tu ajoute un ClsTab au TabControl, celui-ci "voit" une TabPage, mais une TabPage qui contient des contrôles (que tu as ajouté sur ClsTab). Comme déjà dit, ceci est possible car ClsTab dérive de TabPage. Il n'y a pas de conversion, ton ClsTab est géré comme tout autre TabPage par le TabControl.