Afficher des UserControl dans une ListBox
Tout d'abord, bonjour à tous(tes).
Je développe un petit programme dans lequel j'ai créé mes propres UserControl et notamment un contrôle de type "expander" qui se déplie et se replie (cf images ci-dessous).
Mon U.C. collapsed:
http://img708.imageshack.us/img708/8...ontrolplie.png
Mon U.C. expanded:
http://img269.imageshack.us/img269/9...troldeplie.png
Mon User Control fonctionne comme je le désire, cependant j'aimerais en disposer dans une liste verticale dynamique (régie par des boutons "+", "-", ...).
J'ai d'abord cherché un contrôle correspondant au StackPanel d'ASP .NET, mais il semblerait que je ne puisse pas trouver ça en VB .NET.
Tant pis, après avoir tenté une solution maison à base de FlowLayoutPanel puis de TableLayoutPanel.
J'ai réussi à faire un bricolage pas terrible et qui ne me convenait pas (fonctionne, mais pas fonctionnel à l'utilisation et pas optimum).
Je me suis donc rabattu sur le ListBox (ici, ajout d'un UserControl du même type que celui sur les images).
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| ' Ajoute un nouveau panneau d'option numériques repliable s'il n'existe pas déjà
Private Function addANumberOption(ByVal panneauOption As cu_BoiteRepliable) As Boolean
' Vérifie que l'élément à entrer n'existe pas déjà
For Each optionNombre As cu_BoiteRepliable In Me.LB_options.Controls
If optionNombre.Titre.ToLower.Equals(panneauOption.Titre.ToLower) Then
Return False
End If
Next
' Crée un nouveau panneau repliable
panneauOption.addControl(New cu_nombre)
' Ajoute le panneau dans la liste
Me.LB_options.Items.Add(panneauOption)
Return True
End Function |
Or si mes éléments (= mes contrôles utilisateurs que j'ai précédemment créés) s'ajoutent correctement dans la collection des items du ListBox, l'affichage ne suit pas.
Est-il possible d'afficher mon contrôle entièrement (c'est-à-dire pas uniquement une propriété ou un ensemble de propriétés, mais tel que je le vois) ou alors dois-je changer de méthode et trouver une autre solution :calim2: ?
Merci par avance pour vos réponses.
Bonne journée/soirée, cordialement.
Furior
FlowLayetPanel ou TabLayoutPanel
bonjour furior
comme l'as dit Pol63 tu peux utiliser un FlowLayetPanel et si tu la disposition verticale uniquement il me semble que TabLayoutPanel convient car il permet d'ajouter de haut en bas autant de lignes ,redimensinnement auto et scrollbars :
code:
Code:
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
|
Public Class Form2
Public Sub New()
' Cet appel est requis par le Concepteur Windows Form.
InitializeComponent()
' Ajoutez une initialisation quelconque après l'appel InitializeComponent().
'Permet d'ajouter autant de lignes que souhaite
Me.TableLayoutPanel1.GrowStyle = TableLayoutPanelGrowStyle.AddRows
'AutoScroll active
Me.TableLayoutPanel1.AutoScroll = True
For i As Integer = 0 To 9
Dim btn As Button = New Button
btn.Name = "button" & (i + 1).ToString
btn.Text = "button" & (i + 1).ToString
btn.BackColor = Color.GreenYellow
btn.Dock = DockStyle.Fill
Me.TableLayoutPanel1.Controls.Add(btn)
Next
'Redimensionement automatique suivant taille du controle ajoute
For i As Integer = 0 To Me.TableLayoutPanel1.RowCount - 1
Me.TableLayoutPanel1.RowStyles(0).SizeType = SizeType.AutoSize
Next
End Sub
End Class |
bon code....