Copier des éléments dans une tab control [Résolu]

Signaler
Messages postés
116
Date d'inscription
lundi 15 décembre 2003
Statut
Membre
Dernière intervention
8 novembre 2011
-
 Utilisateur anonyme -
Bonjour !
J'ai une petite question.
J'ai un tab control (onglets) nommé "UserTabs" sur ma form, sous VB.NET 2010.

Il y a autant d'onglet que d'utilisateurs ouverts sur le logiciel.
J'aimerai savoir, si à partir d'un "modèle" d'onglet, on pourrait créer des nouveaux onglets, et copier dedans tous les contrôles que renferme l'onglet d'origine ? Ou alors faut-il créer de nouveaux objets manuellement, ce qui serait très long à écrire, vu que j'ai plus de 3 objets facilement sur un onglet ?
D'avance merci ;-)

7 réponses

Messages postés
116
Date d'inscription
lundi 15 décembre 2003
Statut
Membre
Dernière intervention
8 novembre 2011
1
Solution trouvée:
Créer un contrôle utilisateur qui contient tous les éléments que je souhaite dans mon nouveau tabpage.
Créer un nouveau tabpage.
Insérer dans ce nouveau tabpage le contrôle utilisateur.
Si ça peut servir à d'autres, c'est une solution simple et efficace.

Bonjour,
Dans ton cas, tu pourrais utiliser l'héritage.
Voici un petit exemple à tester avec un TabControl sur un formulaire :
Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'ajout de tabpages au TabControl
        TabControl1.Controls.Add(New clsTabPage("test1", Color.Blue))
        TabControl1.Controls.Add(New clsTabPage("test2", Color.Red))
        TabControl1.Controls.Add(New clsTabPage("test3", Color.Chartreuse))
    End Sub

    Public Class clsTabPage
        'hérite de tabpage
        Inherits TabPage

        'nouveau picturebox à insérer dans le tabpage
        Dim pctImage As New PictureBox With {.BorderStyle = BorderStyle.Fixed3D}

        'instanciation d'un nouveau tabpage
        Sub New(ByVal Texte As String, ByVal CouleurPictureBox As Color)
            'définition du texte
            Me.Text = Texte
            'modification d'une propriété d'un objet
            pctImage.BackColor = CouleurPictureBox
            'ajout d'un objet au tabpage
            Me.Controls.Add(pctImage)
        End Sub
    End Class
End Class
Messages postés
116
Date d'inscription
lundi 15 décembre 2003
Statut
Membre
Dernière intervention
8 novembre 2011
1
Merci !
Je teste ça de suite ;-)
Messages postés
116
Date d'inscription
lundi 15 décembre 2003
Statut
Membre
Dernière intervention
8 novembre 2011
1
Thanks, ça ajoute bien des tabs, mais ça ne copie pas les éléments présents dans un tab "modèle" :-/
En fait je les place à la main, c'est plus "facile" pour la mise en page. Et comme j'ai dit, j'en ai + de 200 facile, donc les faire un a un à la main j'en ai pour des jours xD
Messages postés
116
Date d'inscription
lundi 15 décembre 2003
Statut
Membre
Dernière intervention
8 novembre 2011
1
J'ai essayé ça:

   Private TabCount As Integer = 0
   Private Sub AddTab(ByVal Title As String, ByVal AccountId As Integer)
        TabCount = TabCount + 1
        Dim TempForm As New TabPage(Title)
        TempForm.Name = "Account-" & AccountId
        TempForm.Text = "Onglet " & TabCount
        For Each controlObject As Control In TabControl1.TabPages(1).Controls
            controlObject.Name &= TabCount
            controlObject.Text &= TabCount
            TempForm.Controls.Add(controlObject)
        Next
        TabControl1.Controls.Add(TempForm)
    End Sub

Mon tabcontrol(.tabpage(0) est reservé et sert à autre chose.
Mon tabcontrol1.tabpage(1) comprend une combo et un bouton et c'est celui que je veux copier.
Si j'appelle AddTab("coucou",1); et AddTab("coucou",2), j'obtiens bien 2 nouveaux onglets, s'appelant bien onglet 1 et onglet 2.
Problème: le tabpage(1) est vide et ne comprend désormais plus aucun de mes élements de base.
Le nouvel onglet 1 contient ma combobox.
Le nouvel onglet 2 contient mon bouton....

HEEEEELP :D
Messages postés
116
Date d'inscription
lundi 15 décembre 2003
Statut
Membre
Dernière intervention
8 novembre 2011
1
Par contre, j'ai des sub et fonctions dans mon user control qui s'appelle "UserAccountInterface". Comment les appeler ?
J'ai un code du style:

Dim Content As Control = New UserAccountInterface
Si je fais un "Content.RefreshAllTabForAccount()" ca ne fonctionne pas :
Erreur 1 'RefreshAllTabForAccount' n'est pas un membre de 'System.Windows.Forms.Control'.

Comment faire ?

Content que tu ai pu résoudre ton problème tout seul.
et comme j'ai dit, j'en ai + de 200 facile

Et pourtant dans ton premier post on peut lire :
vu que j'ai plus de 3 objets

Il est important de libeller correctement les questions afin d'obtenir des réponses adaptées.

Si on lit le règlement du forum en entier, on s'aperçoit qu'il n'est possible de formuler qu'une seule question par topic.
Je t'invite donc à ouvrir un nouveau sujet pour ta nouvelle question et de marquer celui-ci comme résolu.
Merci.