Je suis l'interface graphique pour un programme de type peinture, où l'utilisateur sera en mesure de sélectionner un outil de dessin à partir d'un ToolStrip. Certains de ces outils ont des variations, et j'aimerais que l'utilisateur puisse en sélectionner un via un menu contextuel. Quiconque connaît l'interface de la barre d'outils Photoshop saura ce que je cherche: l'utilisateur peut soit cliquer sur le bouton et commencer à travailler avec l'outil sélectionné, soit choisir l'un des outils du menu contextuel apparaissant lors du clic, et à partir de ce point sur le bouton représentera cet outil. En outre, le bouton aura la propriété Checked définie sur True lorsque cette famille d'outils est sélectionnée. Je pensais que cela pouvait être accompli avec un SplitButton ou un DropDownButton, mais ceux-ci n'ont pas de propriété Checked pour que l'utilisateur puisse voir quel outil est actuellement sélectionné. Donc je suis allé avec un ToolStripButton et un ContextMenuStrip qui est montré lors du clic. Le problème est que puisque je suis en train de prendre la position du curseur pour afficher le ContextMenuStrip, en fonction de la partie du ToolStripButton qui est cliquée, le menu contextuel peut le masquer partiellement, et c'est un aspect très non poli. Comment puis-je obtenir les coordonnées de l'écran de ToolStripButton? Ou y a-t-il une meilleure façon (et encore relativement simple) de le faire?ToolStripButton avec menu contextuel?
Répondre
Vous ne dites pas quelle technologie vous utilisez pour l'interface graphique. Je devine winforms ou WPF. Si vous avez le choix, WPF peut être le meilleur choix à long terme pour prendre en charge non seulement les boutons de votre menu contextuel, mais aussi pour supporter la partie peinture de votre application. Si vous utilisez des winforms, avez-vous regardé l'ajout d'un menu contextuel à vos boutons principaux?
J'ai implémenté ce type de fonctionnalité auparavant dans les applications. Dans Photoshop, chaque outil a une icône différente (le lasso et le lasso polygonal ont des icônes différentes, le pinceau et le crayon ont des icônes différentes). Donc, lorsque j'utilise une bande d'outils, j'utilise un bouton divisé. Lorsque l'utilisateur sélectionne un outil dans la liste déroulante, vous appliquez l'icône de l'outil sélectionné au bouton de division.
Un ToolStripItem peut avoir une image d'arrière-plan. Pour afficher l'élément sélectionné, vous pouvez simplement définir l'image d'arrière-plan sur une image semi-transparente de couleur unie (c'est-à-dire en noir uni avec une transparence de 25%).
edit: Il serait sans doute préférable d'utiliser une version semi-transparente de SystemColors.Highlight
- 1. Menu contextuel
- 2. Comment ajouter un menu contextuel à NSOutlineView (ie menu contextuel)
- 3. Menu contextuel sous winforms
- 4. Menu contextuel MFC "collant"
- 5. Acrobat Menu contextuel
- 6. menu contextuel parent?
- 7. PyQt menu contextuel
- 8. Menu contextuel pour SWF chargé
- 9. PyQt et le menu contextuel
- 10. Menu contextuel de l'onglet QTabWidget
- 11. Création d'un menu contextuel personnalisé
- 12. Menu contextuel par défaut pour RichTextEdit?
- 13. Comment ouvrir un menu contextuel en diagonale avec jQuery?
- 14. Menu contextuel personnalisé avec sélectionnable activé dans AS3
- 15. Vérifications de l'élément radio du menu contextuel
- 16. Bits contextuels du menu contextuel Internet Explorer
- 17. Tests d'automatisation de l'Ui menu contextuel
- 18. TortoiseHg sans commandes de menu contextuel
- 19. Désactiver le menu contextuel du système DataGridView
- 20. Création d'un menu contextuel iPhone similaire à Mail App Menu
- 21. ajouter un élément de menu au menu contextuel par défaut
- 22. Menu contextuel de la zone de liste
- 23. Barre d'outils DocumentViewer et menu contextuel
- 24. Menu contextuel des dossiers (Dossier uniquement)
- 25. Raccourci du menu contextuel Visual Studio
- 26. Plugin Eclipse - Extension de menu contextuel
- 27. Option de menu contextuel du shell Windows
- 28. Paramètres désactivés dans le menu contextuel Flash
- 29. Menu contextuel du projet Explorateur de solutions
- 30. C# winforms menu contextuel événements problème
Cela ne semble pas être natif. Je suppose que je vais juste coller à ma méthode alors. Existe-t-il un moyen d'obtenir les coordonnées exactes de l'écran ToolStripButton (afin que je puisse toujours y faire apparaître le ContextMenuStrip)? – Mike
Je ne comprends pas quand vous dites que ça n'a pas l'air d'être natif. En outre, un bouton divisé sur une bande d'outils possède un menu contextuel intégré, vous n'avez donc pas besoin de positionner ou d'afficher manuellement le menu contextuel. – snarf