Inserer une form dans un onglet de TabControl

mhd51 Messages postés 8 Date d'inscription mardi 3 février 2009 Statut Membre Dernière intervention 6 février 2009 - 3 févr. 2009 à 11:02
mhd51 Messages postés 8 Date d'inscription mardi 3 février 2009 Statut Membre Dernière intervention 6 février 2009 - 3 févr. 2009 à 22:01
j'aaimerai savoir comment faire pour inserer une form dans un onglet de control TabControl.
En fait je cherche a ouvrir dynamiquement des onglets avec des controls differents sur chacun. Je me suis dis que je pouvais mettre les controls dans une form.
Est ce que vous avez une reponse a me donner pour m'aider ... ???
mille merci d'avance.

9 réponses

Crew215 Messages postés 9 Date d'inscription mardi 3 février 2009 Statut Membre Dernière intervention 5 février 2009
3 févr. 2009 à 11:43
Je pense que tu vas devoir développer une interface pour chacun de tes onglets, ensuite à l'ouverture ou en fonction d'un évènement de la form mère tu peux afficher l'onglet qui t'intéresse en faisant <Nom de ton TabPage>.Show().

J'espère que ça t'aura aidé, sinon re précise ;)

Have ANice Trip 
0
mhd51 Messages postés 8 Date d'inscription mardi 3 février 2009 Statut Membre Dernière intervention 6 février 2009
3 févr. 2009 à 13:28
en fait, j'arrive bien a afficher l'onglet que je veux, sauf que dedans je ne retrouve pas l'ensemble des controles que j'avais initialises. J'ai l'impression que les controles ne peuvent apparaitre qu'une seule fois.
C'est pour cela que je me suis sit qu'il faudrait peut etre mieux tout mettre dans une form et ouvrir une form par onglet, sauf que ca je n'y arrive pas non plus.
Bref je n'ai pas trop de solution.
Mon projet est : logiciel de factures avec gestion des clients ...
J'ai donc cree un menu et quand je clique sur creation d'un client, un onglet de mon tabcontrol s'ouvre pour pouvoir le creer, mais si j'ai besoin de consulter un autre client, je retourne dans mon menu et je clique sur consulter un client et la j'ai toutes les infos dans un nouvel onglet ... Le soucis est que je ne peux pas consulter 2 clients car ca fait 2 onglets identiques et tout ce melange.
J'ai choisi de gerer avec des onglets pour eviter qu'il y ait 10 fenetres d'ouvertes en meme temps.
Si vous avez une solution, je suis toute ouverte et vous en remercie.
0
cs_fauve Messages postés 661 Date d'inscription vendredi 2 décembre 2005 Statut Membre Dernière intervention 23 mars 2011 8
3 févr. 2009 à 13:57
Voici un exemple pour t'aiguiller afin de rajouter un contrôle dans un onglet :





Dim
 bouton As New Button

' Définit le positionnement du bouton
bouton.Location =   New  System.Drawing.Point(2020)
' Définit la taille du bouton
bouton.Size  = New System.Drawing.Size(15030)
' Définit sa couleur
bouton.BackColor =  Color.Cyan
' Définit le texte affiché
bouton.Text =  "Codes-Sources.com"

' Ajoute ce bouton au deuxième onglet de TabControl1
TabControl1.TabPages( 1 ).Controls.Add(bouton)

++

Fauve





<hr size ="2" width="100%" />
Pensez : Réponse Acceptée 
0
mhd51 Messages postés 8 Date d'inscription mardi 3 février 2009 Statut Membre Dernière intervention 6 février 2009
3 févr. 2009 à 14:22
Merci pour ta reponse mais ce n'est pas encore cela. J'arrive a les creer mais je voudrais dupliquer un panel ou il y a tous mes controles, puis le rajouter a un onglet, et meme si j'ai plusieurs onglets, je dois retrouver le bon panel associe au bon onglet ...
Je ne sais pas si je dois prendre un panel ou une form. Dans les 2 cas, je n'arrive pas a les gerer ...
Donc je sais creer des onglets, je sais rajouter des controls sur l'onglet mais j'aimerais rajouter un panel deja tout pret sur un onglet et ce dynamiquement ...
Je me suis dit que j'allais gerer des panel comme les onglets avec des index mais ce n'est pas possible.
Merci a tous ...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_fauve Messages postés 661 Date d'inscription vendredi 2 décembre 2005 Statut Membre Dernière intervention 23 mars 2011 8
3 févr. 2009 à 14:32
Mais si c'est possible tu peux créer une collection de panel exactement comme la collection de TabPage du TabControl

Exemple :





Dim
 Collect_Panel As New System.Collections.Generic.List(Of System.Windows.Forms.Panel)








Dim
 Panel1, Panel2, Panel3 As New Panel

Collect_Panel.Add(Panel1)
Collect_Panel.Add(Panel2)
Collect_Panel.Add(Panel3)

' Pour accéder à Panel1
' Collect_Panel.Item(0)

' Pour accéder à Panel2
' Collect_Panel.Item(1)

' Pour accéder à Panel3
' Collect_Panel.Item(2)





++

Fauve


Pensez : Réponse Acceptée 
0
mhd51 Messages postés 8 Date d'inscription mardi 3 février 2009 Statut Membre Dernière intervention 6 février 2009
3 févr. 2009 à 15:39
merci pour cette information, j'aimerais faire une collection de panel a partir d'un panel de reference ou je trouverais tous mes controles. C'est possible ?
Et pensez vous que ce ne serait pas plus simple en faisant avec une form ?
j'ai essaye avec votre bout de code et je n'arrive pas a reafficher le panel sur un onglet deja cree que je selectionne. J'ai l'impression qu'a chaque fois j'ecrase tous les panels a chaque fois que je cree un onglet.
0
cs_fauve Messages postés 661 Date d'inscription vendredi 2 décembre 2005 Statut Membre Dernière intervention 23 mars 2011 8
3 févr. 2009 à 17:56
Salut,

Comment est crée ton panel de référence à l'aide du concepteur de vues ou alors dynamiquement ? Si c'est dynamiquement, peux-tu mettre le code permettant de construire de ton panel de référence. Ce sera plus simple avec une fonction en spécifiant le TabControl et l'index du TabPage en arguments.

++

Fauve


Pensez : Réponse Acceptée 
0
cs_fauve Messages postés 661 Date d'inscription vendredi 2 décembre 2005 Statut Membre Dernière intervention 23 mars 2011 8
3 févr. 2009 à 17:58
Ou alors le panel de référence se trouve t-il dans le 1° onglet ?

Pensez : Réponse Acceptée 
0
mhd51 Messages postés 8 Date d'inscription mardi 3 février 2009 Statut Membre Dernière intervention 6 février 2009
3 févr. 2009 à 22:01
j'ai cree un panel de reference sur la 1er onglet que je dois rendre non visible (qui d'ailleurs ne marche pas avec la propriete .visible, je ne comprends pas pourquoi, est-ce parce qu'il y a mon panel ???)
Donc dans l'onglet qui va me servir de reference, j'y mets mon panel avec les controles deja cree avec le concepteur de vue. Ensuite, je cree un nouvel onglet, puis dans ma collection de panel que j'ai declare en global, j'y rajoute un panelque j'initialise avec mon panel de reference.
Tout s'affiche comme il faut lors de l'execution mais si je cree plusieurs onglets identiques, je ne retombe pas sur mes pattes. Le panel n'est que sur le dernier cree, alors que la collection de panel existe et est renseignee ...
Bref je commence a me demander si ce n'est vraiment pas trop dur pour moi car il va falloir que j'entretienne une dizaine de panel de reference avec des onglets ... et comme je m'y perds deja ...
Avez vous une autre solution pour gerer ce cas, un peu complique ?
Merci

Voici le code que j'ai fait.



If
nb_TabPages = 0

Then



TabControl.TabPages(nb_TabPages).visible =




False         'd'ailleurs ca ne marche pas ...






End



If






Dim
myTabPage

As



New
TabPage()
TabControl.TabPages.Add(myTabPage)                                ' je rajoute un onglet vierge

Dim Panel1
As
New PanelPanel1 = CreerClient_Panel                                                       ' j'initialise mon panel avec celui de reference

Panel1.Visible =

TrueCollect_Panel.Add(Panel1)                                                       ' j'ajoute mon panel dans ma collection de panel

myTabPage.Controls.Add(Collect_Panel(nb_TabPages))

Collect_Panel(nb_TabPages).Show()                                    

TabControl.SelectedTab = myTabPage

nb_TabPages += 1

...

Private

Sub TabControl_SelectedIndexChanged(
ByVal sender
As
Object,
ByVal e
As System.EventArgs)
Handles TabControl.SelectedIndexChangedCollect_Panel(TabControl.SelectedIndex - 1).Visible =

TrueCollect_Panel(TabControl.SelectedIndex - 1).Show()                  ' je reinitialise le bon panel pour ne pas me tromper ... au cas ou ... si je clique sur un autre onglet ....

End
Sub
0