J'ai eu de la chance dans le passé en créant des contrôles utilisateurs composites pour fournir des fonctionnalités spécifiques en utilisant des contrôles Winforms .NET natifs. Cela fonctionne très bien tant qu'il n'y en a pas trop, auquel cas les choses commencent à ralentir. Dans votre cas, et ceci est juste hors de ma tête, mais, peut-être vous pourriez prendre un FlowLayoutPanel, un bouton, et une zone de texte qui prend en charge l'auto-complétion et les mettre ensemble pour créer un contrôle qui fournirait la fonctionnalité que vous recherchez.
Si aucune adresse n'est sélectionnée dans le contrôle (par exemple, dans une chaîne < de la liste >), le conteneur (FlowLayoutPanel) affiche uniquement la zone de texte. Une fois que l'utilisateur a sélectionné une entrée, le contrôle crée automatiquement un bouton avec la légende appropriée et l'insère à gauche dans le FlowLayoutPanel. Si l'utilisateur supprime une adresse qu'il a déjà sélectionnée, supprimez simplement sa représentation (le bouton) du FlowLayoutPanel, et le TextBox peut redimensionner en conséquence. Il peut y avoir des problèmes avec l'obtention de la zone de texte pour remplir l'espace restant (je ne me souviens pas comment faire cela), mais vous avez l'idée. Le conteneur ne doit pas forcément être FlowLayoutPanel - vous pouvez utiliser un Panel avec des contrôles Docked, ou même un TableLayoutPanel pour cela.
Une conception comme je l'ai décrit permettrait à l'utilisateur de supprimer l'adresse en cliquant sur le bouton. Cependant, sans d'autres repères visuels, ce n'est pas très intuitif ou facile à utiliser, donc je considérerais que le "Bouton" soit un autre contrôle composite qui contient une étiquette "prettied-up" avec un minuscule bouton de suppression (X) à droite. Pour cela, vous pouvez utiliser un contrôle Panel et ancrer le bouton X vers la droite, et remplir l'étiquette sur la gauche. Vous devez fournir ici les propriétés publiques nécessaires pour contrôler le texte et fournir un gestionnaire d'événements ou un rappel pour la fonctionnalité de suppression. Une fois que le composant visuel fonctionne, tout ce qui reste est de fournir les propriétés et méthodes appropriées sur le contrôle principal pour lui permettre d'interagir au besoin avec du code externe.
Ce fil a l'air comme il est lié: http://stackoverflow.com/questions/641464/net-control-like-outlooks-e-mail-address-text-control –
en d'autres termes, vous essayez de simuler les perspectives "Pour:" zone de texte. – serhio