Bonjour,
Je voudrais créer un contrôle utilisateur qui ouvre un Panel ( ou mieux, un TableLayout Panel) avec des contrôles dedans.
Ce contrôle utilisateur serait juste constitué d'un bouton qui, lorsqu'il est cliqué, afficherait le Panel. Comme par exemple un combobox affiche une liste drop-down quand on clique la flêche.
Ce Panel (ou TableLayoutPanel) doit pouvoir être "designé" dans ma solution.
J'ai fait un test. Le bouton BtnDropDown ouvre bien un Panel sur la forme contenant le UserControl ça, je sais faire mais, plutôt que de créer les contrôles en dynamique, je préférerais avoir un Panel "prédéfini" que je peux modifier en design.
En fait je voudrais pouvoir remplacer la routine ShowCalendar par quelque chose du genre frm.controls.add(Popup)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51 Private Sub BtnDropDown_Click(sender As Object, e As EventArgs) Handles BtnDropDown.Click Dim frm As Form Static Show As Boolean frm = Me.ParentForm.FindForm Show = Not Show ShowCalendar(Show , frm) End Sub Private Sub ShowCalendar(ByVal Show As Boolean, ByVal frm As System.Windows.Forms.Form) If Show Then Dim ctl As New Panel With ctl .Name = "xxx" .BorderStyle = BorderStyle.FixedSingle .Size = _size Dim pt As New Drawing.Point(Me.Left, Me.Top + Me.Height) .Location = pt End With AddControls(ctl) frm.Controls.Add(ctl) Else frm.Controls("xxx").Dispose() End If End Sub Private Sub AddControls(ctl As Panel) Dim btndwn As New Button With {.Name = "Btndwn", .Size = New Size(22, 22), .Text = "t", .Font = New Font("Wingdings 3", 10), .Left = 0, .Top = ctl.Height - 22} AddHandler btndwn.Click, AddressOf ClickHandler ctl.Controls.Add(btndwn) Dim btnup As New Button With {.Name = "Btnup", .Size = New Size(22, 22), .Text = "u", .Font = New Font("Wingdings 3", 10), .Left = ctl.Width - 22, .Top = ctl.Height - 22} ctl.Controls.Add(btnup) etc....etc.... End Sub Private Sub ClickHandler(sender As Object, e As EventArgs) 'pour faire quelque chose..... End Sub
Bref, dans ma solution "bibliotheque de classe", quel élément dois-je utiliser (je suis un peu perdu parmi toutes les possibilités de VS) pour que je puisse donc designer ce popup et comment l'appeler.
Autre question: comme vous voyez, pour "fermer" le popup, je fais un dispose du Panel (et donc de tous les contrôles s'y trouvant). C'est pas trop radical/dangereux?
Merci pour vos avis
Olivier
Partager