Panel Form

Ania5 Messages postés 72 Date d'inscription mercredi 9 novembre 2011 Statut Membre Dernière intervention 27 avril 2013 - 27 avril 2013 à 12:54
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 28 avril 2013 à 10:24
Bonjour
J'ai un form1 qui contient un panel et un button1 quand je clic sur le butto1 j'appel un form2 qui se déplace dans le panel1 voila le code :

Dim f As New Form2()
f.TopLevel = False
Me.Panel1.Controls.Add(f)
f.Show()

mon problème je veux accéder au form2 qui se déplace sur la form2 j’essaie par ce code :

form1.panel1.form2
mais ça marche pas
Merci pour vos aides.

5 réponses

Utilisateur anonyme
27 avril 2013 à 16:54
Bonjour,
Un From est un conteneur et ne peut être contenu.
Au lieu d'ajouter une Form, ajoute un GroupBox ou un autre panel...


Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
0
foliv57 Messages postés 420 Date d'inscription vendredi 17 novembre 2006 Statut Membre Dernière intervention 15 juillet 2014 9
27 avril 2013 à 17:52
Bonjour,

Il faut rajouter le name à la création
Dim f As New Form2()
f.TopLevel = False
f.Name = "SubForm2"
Me.Panel1.Controls.Add(f)
f.Show()

Et comme ceci pour y accéder
Dim frm2 As Form2 = CType(Me.Panel1.Controls("SubForm2"), Form2)
0
Utilisateur anonyme
27 avril 2013 à 22:40
Erreur...
Ucfoutu a rectifié mes dires, et m'a dit:
Tu as dit
"Un From est un conteneur et ne peut être contenu."Ce n'est pas vraiment tout-à-fait exact.
Je m'explique :
- Il est vraisemblable que VB.Net (comme VB6, d'ailleurs) n'ait pas prévu cette possibilité de façon native.
- il n'en demeure pas moins vrai que, dès lors que les deux fenêtres sont de frais fenêtre Windows -donc dotées d'un hwnd), on peut toujours rendre celle que l'on veut parente de l'autre, que l'autre soit ou non un Form.
voici, par exemple et analogie, ce que je mettrais dans un bouton de Form1 pour que son Frame Frame1 devienne le parent du form Form2. Fonctionne sans faille.
Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long

Private Sub Command1_Click()
SetParent Form2.hWnd, Frame1.hWnd
Form2.Show
End Sub


Vu que je m'appretais à aller faire un tour en plongé j'ai pas trop réflechi et j'ai répondu:
Merci, je m'en suis rendu compte en voyant le message de foliv57 juste après...
Mais c'est que je n'ai pas l'habitude de procéder ainsi, j'aurais l'impression de vouloir charger mon tracteur dans ma renault 5...



Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
0
foliv57 Messages postés 420 Date d'inscription vendredi 17 novembre 2006 Statut Membre Dernière intervention 15 juillet 2014 9
28 avril 2013 à 10:05
J'avoue que j'ai surtout voulu répondre à la question "comment retrouver un control dans la collection de controls d'un panel".
Je ne voulais pas trop rentrer dans le débat de l'intéret de contenir une Form dans un Panel qui peut paraitre douteux.
Il est évident que si la Form principale ne contient que le panel et les boutons et qu'on affiche des sous fenêtres dans le panel, il vaut mieux utiliser la technique de la Form mdi parente plutôt qu'un panel.
Maintenant ania5 a peut être une utilisation particulière qui nécessite cette technique, et comme elle fonctionne...
J'ai déjà vu des controls permettant de docker des sous fenêtres à la manière de visual studio avec cette technique. Donc pourquoi pas.
0

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

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
28 avril 2013 à 10:24
Je ne voulais pas trop rentrer dans le débat de l'intéret de contenir une Form dans un Panel

Cela peut arriver, notamment (mais pas seulement) si l'on veut des menus différents sur un form et l'autre
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
Rejoignez-nous