2008-12-07 8 views
3

En travaillant dans des formulaires de gain C#, j'essaye de créer une liste d'éléments où chaque élément est compromis d'une icône et de 3 étiquettes dans une disposition spécifique.contrôle utilisateur dans une liste sélectionnable - meilleure façon de le faire?

est ici une illustration de ce

http://hosting04.imagecross.com/image-hosting-13/3535help.jpg

L'utilisateur doit être en mesure de choisir une seule ligne, comme dans un Listview normal. Ma première tentative a été de créer l'icône et les étiquettes dans un contrôle utilisateur, puis de placer le contrôle utilisateur dans un FlowLayoutPanel dans une disposition verticale (ce qui créerait une liste). Le problème était la sélection. Comme l'événement click était capturé par le contrôle utilisateur, il n'y avait aucun moyen facile de laisser les autres contrôles utilisateur de la liste savoir que le contrôle était sélectionné et s'ils sont actuellement sélectionnés, ils devraient maintenant être désélectionnés. (J'espère que cela a du sens ...)

J'ai également essayé d'utiliser une liste de lecture personnalisée open source que j'ai trouvé ici: http://www.codeproject.com/KB/list/aa_listview.aspx mais c'est trop bogué. J'ai également pensé à créer un contrôle personnalisé qui héritera de Listview et rendra mon contrôle utilisateur dans la liste, mais je lis aussi à propos de quelqu'un qui a essayé de le faire et qui a eu beaucoup de difficultés.

Je serais très heureux d'entendre vos suggestions.

Merci!

Répondre

2

Ce que vous pouvez essayer est d'avoir deux contrôles utilisateur. Un contrôle que vous semblez avoir déjà, qui est l'icône et les étiquettes. Ce sera un contrôle interne que vous ne pouvez pas instancier en dehors de votre assemblage. Le deuxième contrôle utilisateur, sera juste un conteneur de sortes (vous pouvez le faire soit en utilisant réellement un contrôle utilisateur, soit en héritant d'un panneau ou autre, peu importe). Cela servira simplement de collection d'articles individuels, et il gérera la sélection et le désélection des articles. Fondamentalement, chaque contrôle utilisateur déclenchera l'événement click, auquel le contrôle utilisateur de votre conteneur se connectera. Il saura alors lequel sélectionner et lequel désélectionner.

Espérons que cela a du sens!

Questions connexes