10
votes

Créer la liste de contrôle de Windows.Forms

J'ai décidé que j'aimerais avoir une liste avec "contexte complexe", c'est-à-dire des contrôles personnalisés. (Le but est quelque chose à ressembler à une liste d'amis, avec des photos, des icônes de statut, du texte et du "bouton de discussion de démarrage".)

Mais j'aime bien cela se comporter comme une liste: barres de défilement, possibilité de sélectionner plusieurs éléments, etc.

Quand je regarde ListView et Listbox, je ne vois que je ne peux que ajouter du texte et une icône, mais pas des contrôles arbitraires. Je manque comment cela se fait?

ou devrais-je utiliser quelque chose d'autre que ListView / ListBox?


7 commentaires

Pourquoi ne pas essayer WPF plutôt que Winforms?


@Dean Crak: J'ajoute une fonctionnalité à une application existante. Qui est Windows.Forms.


Sans parler de «essayer» WPF entraînerait une courbe d'apprentissage escarpée si vous n'avez pas encore d'expérience.


L'apprentissage au moins des bases du WPF ne peut bénéficier qu'à un développeur C # à l'avenir, car MS met beaucoup de concentration. En outre, quelle op tente de faire serait simplement une simple utilisation de la liaison XAML et de données, qui est couverte dans les premiers chapitres de tous les tutoriels WPF.


@Commanderz qui assume ce que l'OP veut atteindre est tout ce qui est écrit dans le poste.


Les exigences plus complexes justifieraient encore plus l'utilisation du WPF (au coût d'un certain temps nécessaire pour apprendre les techniques requises dans WPF, mais à nouveau - pour les avantages futurs.)


L'argument pour les avantages futurs est la situation idéale, mais la situation actuelle est souvent meilleure que vous sachiez. WPF ne peut pas être utilisé dans la société, ce qui signifie si vous choisissez de l'utiliser (ce qui pourrait ne pas être votre choix), vous êtes en train de faire la responsabilité de la maintenance. Vous pourrez peut-être atteindre les bases, mais pas plus de concepts avancés. Celles-ci inciteraient plus d'apprentissage, plus de risques de conception, plus de problèmes de conception, etc. Je suis tout à fait d'accord avec WPF résolvant les problèmes d'interface utilisateur de l'interface utilisateur, mais l'OP est dans une application WinForms et il est étiqueté comme WinForms, il faut donc probablement une solution WinForms.


3 Réponses :


5
votes

Il y a un contrôle enterré dans les packs d'alimentation Visual Basic appelés le répéteur de données .

Cela vous permet d'associer vos propres contrôles avec un conteneur de données qui devient un élément du répéteur.

Je l'ai utilisé une fois auparavant, et je crois que ce n'est pas entièrement intuitif, mais une fois que vous avez la tête, cela peut être assez utile. Cela permet également de rouler votre propre contrôle.

Il est actuellement la chose la plus proche de l'idée d'un contrôle répété arbitraire sur les formulaires Windows que j'ai trouvés jusqu'à présent.


0 commentaires

1
votes

Ce serait plutôt trivial de créer dans WPF (pendant que cela va être beaucoup de travail sous Windows Forms) - WPF est conçu pour créer de tels contrôles de l'interface utilisateur riches. Si le reste de votre application est sous Windows Forms, vous pouvez héberger contrôle WPF sous Windows Formulaires .


2 commentaires

Il est également trivial dans Winforms, il existe un contrôle disponible pour le faire dans les packs d'alimentation de base visuels appelés répéteur de données. Je suis d'accord que partir de rien dans Winforms n'est cependant pas trivial.


Tout n'est pas un problème xy. Parfois, il y a une raison pour laquelle OP doit utiliser un système sur un autre.



12
votes

Utilisez un flowlayOntPanel . Si vous souhaitez des contrôles arrangés verticalement, avec défilement, faire: xxx

Assurez-vous que le panneau est suffisamment grand pour contenir des contrôles et de la barre de défilement. Je ne suis pas sûr de votre exigence de sélection.


0 commentaires