Est-il possible de créer une liste listant un tas de contrôles personnalisés? Je suppose que vous devrez peut-être invoquer une sorte de dessin personnalisé des objets enfants, mais je ne sais pas comment faire cela. Quelqu'un peut-il nous éclairer là-dessus?WinForms listbox contenant des contrôles personnalisés?
Répondre
Sa barre de défilement ne peut pas faire défiler les contrôles. C'est en général quelque chose que vous voulez éviter, en mettant beaucoup de contrôles dans, disons, un Panel dont la propriété AutoScroll est True rendra votre interface utilisateur inerte. Les contrôles sont des objets coûteux.
Jetez un coup d'œil à l'événement ListBox.DrawItem. Vous pouvez dessiner votre propre objet et le rendre exactement comme vous le souhaitez avec les méthodes de la classe Graphics. Et c'est très bon marché. Il y a un très bon exemple dans le MSDN Library article pour l'événement.
C'est assez facile avec WPF, il suffit d'utiliser la composition de base. Dans un monde WinForms, vous devrez probablement personnaliser le conteneur. Un ListBox n'est pas conçu pour être un contrôle de conteneur.
Je n'ai jamais utilisé WPF, donc je m'en tiens à WinForms. Donc, le conteneur et les articles devraient être un contrôle personnalisé. – MarkP
Le conteneur serait, les éléments pourraient ne pas avoir à être. Votre conteneur personnalisé contiendrait probablement une collection d'objets 'Control'. –
Je l'ai fait avant de ne pas utiliser un FlowLayoutPanel, mais juste un panneau normal avec des contrôles ancrés en haut. Vous pouvez ajouter une barre de défilement, etc.
Cela fonctionne très bien pour quelques contrôles. Plus que quelques-uns, et il commence à vraiment ralentir. Si vous avez le temps, je voudrais dessiner un faux contrôle à sa place, comme dans Hans Passant's answer, puis lorsque l'utilisateur clique sur l'un des éléments, remplacez-le par un contrôle réel qui ressemble exactement le même. Lorsque cet élément perd le focus, disposez-le et modifiez la liste sous-jacente.
vous avez volé mon commentaire et l'a transformé en une réponse ... génial !!! – Luiscencio
@Luiscencio - C'était plus une réponse à votre commentaire, en fait. Remarquez que j'ai dit que je n'utilisais pas un FlowLayoutPanel, mais un simple Panel. La raison en est que si vous voulez simuler une zone de liste, ils sont tous disposés verticalement, et non dans la disposition "flow" du FlowLayoutPanel. (D'ailleurs, si vous vouliez que votre commentaire soit une réponse, vous devriez l'avoir posté comme réponse.) – dlras2
Je t'aime toujours – Luiscencio
Peut-être que c'est ce que vous cherchez: Flexible List Control
j'ai écrit cet article il y a quelque temps.
private void OnDrawItem(object sender, DrawItemEventArgs e)
{
Rectangle rect = e.Bounds;
rect.Offset(0, -rect.Top);
using (Bitmap bitmap = new Bitmap(rect.Width, rect.Height))
{
Control control = (Control)listBox.Items[e.Index];
control.DrawToBitmap(bitmap, rect);
rect = e.Bounds;
e.Graphics.DrawImage(bitmap, e.Bounds);
}
}
- 1. ListBox Valeur contenant des liens
- 2. Écrire des contrôles personnalisés
- 3. asp.net vs WinForms ListBox ListBox
- 4. Snaplines de base dans les contrôles Winforms personnalisés
- 5. MPMoviePlayerController avec des contrôles personnalisés
- 6. listbox contenant des cases à cocher
- 7. Asp.Net MVC contrôles personnalisés - conteneurs
- 8. WinForms ListBox avec des éléments en lecture seule/désactivés
- 9. Contrôles Web ASP.NET personnalisés
- 10. Comment créer des contrôles Web personnalisés Java?
- 11. Créer des contrôles personnalisés pour Java ME
- 12. Comment créer des contrôles personnalisés dans Silverlight?
- 13. Propriétés des contrôles personnalisés - C#, les formulaires
- 14. Comment créer des contrôles personnalisés pour iPhone?
- 15. Ajouter des contrôles personnalisés à Thunderbird (Extension)
- 16. Contrôles personnalisés ASP.NET
- 17. Contrôles personnalisés WxPython
- 18. WinForms Comparaison des contrôles de visualisation HTML
- 19. Espacement des contrôles Winforms sous Windows 7
- 20. Comment utiliser les contrôles personnalisés dans WPF
- 21. Ninject, ASP.NET et contrôles personnalisés
- 22. ASPxGridView - Contrôles personnalisés dans DetailRow
- 23. C# winforms distribue uniformément 3 contrôles
- 24. Héritage des styles dans les contrôles WPF personnalisés
- 25. contrôles personnalisés, la création dynamique
- 26. valeurs sélectionnées de la listbox (winforms)
- 27. Comment enregistrer un NSMutableArray contenant des objets personnalisés dans NSUserDefaults
- 28. Liaison WinForms ListBox aux propriétés de l'objet
- 29. Travailler avec WinForms dans listbox (C#)
- 30. Couleur d'arrière-plan d'un élément ListBox (winforms)
Utilisez-vous Winforms, WPF ou autre chose? –
Pour faire ce genre de chose, j'ajoute un * FlowLayoutPanel * puis j'ajoute mes contrôles de façon fantaisiste. – Luiscencio
Just WinForms ... – MarkP