Info-bulle pour chaque élément dans une zone de liste déroulante
Je veux juste ajouter une info-bulle pour chaque élément dans une liste déroulante. je suis à l'aide de c#.net application windows.
Il n'y a pas d'option comme
zone de liste déroulante.les articles[1].tooltip();
Est-il possible d'ajouter info-bulle ?
source d'informationauteur
Vous devez vous connecter pour publier un commentaire.
Il ya effectivement un couple de solutions raisonnables à cette question. Un forum MSDN a un ComboBox Élément en surbrillance l'événement post qui contient deux possibilités,
l'un de nobugz et un de agrobler. Chacun d'eux fournit le code pour la sous-classe d'une zone de liste modifiable qui est censé outil poignée de conseils sur les différents éléments dans la zone de liste déroulante du menu déroulant. Agrobler la solution semble plus poli, en ce qu'il/elle inclut même quelques belles illustrations, mais malheureusement, il n'est pas clair (pour moi du moins) comment remplir le crucial ToolTipMember propriété du contrôle.
Ces deux solutions semblent permettre d'arbitraire info-bulles attribué à des éléments individuels. De façon plus spécifique, mais le plus souvent de cas, est l'endroit où vous voulez simplement l'info-bulle pour le miroir du texte de l'article, lorsque vous savez que vous pouvez avoir des articles qui sont trop longues pour s'adapter à la largeur de la zone de liste déroulante. Dans mon propre cas, j'ai un exemple d'une zone de liste déroulante qui détient les chemins de fichiers de sorte qu'il est facile de voir où le contenu pourrait dépasser la zone de liste déroulante de la largeur.
Zhi-Xin Ye, dans le forum MSDN post Windows Déroulant questionoffre une solution qui répond à ce problèmes plus spécifiques et est beaucoup plus simple. - Je reproduire le code ici dans son intégralité. (Notez que ce code suppose que vous avez créé un Formulaire Form1 et accroché jusqu'à la charge du gestionnaire illustré, et a également ajouté une zone de liste déroulante nommée comboBox1 et un outil de pointe gestionnaire toolTip1.)
Tout simple et concis, ce code ne souffrent d'un défaut (comme il est indiqué dans une réponse sur le dessus de MSDN fil): à mesure que vous déplacez la souris (sans cliquer) à partir d'une liste déroulante élément à l'autre, que tous les autres on montre une persistance de la bulle d'aide! Le correctif est seulement fait allusion à encore une autre entrée sur ce thread, j'ai donc pensé qu'il serait utile de proposer une offre complète, code corrigé ici:
D'ailleurs enlever un peu redondant des portions de code (par exemple, de la "ce" qualificatif) la principale différence est le déplacement de la toolTip1.Masquer les appeler dans la DropDownClosed gestionnaire d'événement. Sortir de la DrawItem gestionnaire élimine le défaut mentionné ci-dessus; mais alors vous devez le fermer lorsque la liste déroulante, ferme, sinon la dernière affiche l'info-bulle de conserver à l'écran.
2012.07.31 Additif
Voulais juste mentionner que, depuis, j'ai créé un composite de la zone de liste déroulante qui intègre cette info-bulle capacité donc, si vous utilisez ma bibliothèque vous n'avez pas de code à écrire. Il suffit de glisser un ComboBoxWithTooltip sur le concepteur Visual Studio et vous avez terminé. Forer vers le bas à ComboBoxWithTooltip sur mon API page ou télécharger mon open-source C# bibliothèque pour commencer. (A noter que le patch pour le bug Andrew pris sera dans la version 1.1.04, qui doit sortir bientôt.)
Ma solution:
Appuyant sur la solution de Michael Sorens (fixe quelques bugs et ajouté des fonctionnalités). A peu de choses, ce n':
info-bulle, ou d'afficher quelque chose de complètement différent).
e.index>0
dans la deuxièmeif
déclaration).Il ne permet pas d'afficher l'info-bulle lorsque le menu est FERMÉ.
Vous aurez besoin pour créer votre propre UserControl.
Avoir une info-bulle pour chaque élément dans une zone de liste déroulante est une exigence inhabituelle; vous pourriez peut-être utiliser un 2 zone de liste déroulante de la colonne à la place?
Si vous êtes le chargement à partir d'une source de données, obtenir les données dans datatable et de définir la même zone de liste déroulante.
Ma datatable a trois colonnes: ID,NOM,DÉFINITION. Ci-dessous mon code :