Comment ajouter une icône de Système.De Windows.Les formulaires.MenuItem?
J'ai essayé d'ajouter une icône à un de mes éléments de menu contextuel, mais je ne pouvais pas le faire. Quelqu'un peut-il m'aider?
Voici le code que j'ai écrit:
private System.Windows.Forms.ContextMenu notifyContextMenu;
private void foo() {
if (notifyIcon == null) {
notifyIcon = new System.Windows.Forms.NotifyIcon();
}
if (notifyContextMenu == null) {
notifyContextMenu = new System.Windows.Forms.ContextMenu();
notifyContextMenu.MenuItems.Add("Exit");
//How do I add an icon to this context menu item?
}
notifyIcon.ContextMenu = notifyContextMenu;
}
}
OriginalL'auteur Alexandre | 2012-05-20
Vous devez vous connecter pour publier un commentaire.
MainMenu/ContextMenu sont obsolètes, vous devez utiliser le menu bande de classes à la place.
Changement
à
http://msdn.microsoft.com/en-us/library/system.windows.forms.toolstripitem.image.aspx
Enfin joindre le menu contextuel de la bande de notifier icône,
...Strip
classes sont plus récents, mais ils vont produire des menus regard absolument odieux sur Windows Vista et les versions ultérieures. Au lieu de demander à Windows de dessiner les menus, ils sont tous personnalisés dessinés avec de la .NET code. Elles semblent bonnes sous Windows XP et qu'ils correspondent à la coutume attiré les menus utilisés dans Office XP, mais la technologie a parcouru un long chemin depuis lors. À l'aide de ces vilaines menus dans une tentative pour repousser l'obsolescence semble être une très stupide décision pour moi. Votre application ne sera jamais regarder à droite sur les versions modernes de Windows.Si le natif de l'enveloppe ne avoir un meilleur regard sur Windows Vista et au-dessus, le même effet peut être obtenu en bande par le biais des classes personnalisées moteur de rendu, code.google.com/p/szotar/source/browse/trunk/Client/...
Même pas proche de la même... (je l'ai essayé, ré-écrit, modifié, essayé un peu plus. Pas le même. Pire, peu importe combien vous rendre regard comme les menus natifs, il ne sera pas se comporter comme les menus natifs.) Mais en effet, mieux...
OriginalL'auteur Lex Li
Lex Li réponse couvre la plus simple façon de le faire: passer de la
MainMenu
de contrôle de laMenuStrip
de contrôle, qui intègre, out-of-the-box " pour ajouter des icônes pour chaque élément de menu. Malheureusement, comme je l'ai expliqué dans un commentaire de sa réponse, cette solution a d'horribles conséquences.En particulier, si vous utilisez le
MenuStrip
de contrôle, vos menus seront toujours moche et de place sur les versions plus récentes de Windows, car ils sont personnalisés dessiné par .NET code qui ne sera probablement jamais mis à jour. Bien sûr, ils look lisse sur Windows XP, mais c'est de vieilles nouvelles pour au moins 5 ans. Menus look totalement différent à partir de Windows Vista, et c'est ce que votre utilisateur attendez de votre application. Le plus cool des icônes dans le monde ne va pas vous aider à chercher plus moderne. Comparer:De sorte que le un peu plus compliqué solution est de coller avec le
MainMenu
de contrôle, qui utilise les menus établis par Windows lui-même, mais écrire du code qui gère l'ajout d'une icône.Et heureusement, Wyatt O'Day a déjà écrit un grand contrôle personnalisé qui fait cela pour vous. Tout ce que vous avez à faire est de le télécharger, de le déposer dans votre projet, de la compilation, et de commencer à l'utiliser. Il est open-source, sous licence la licence BSD, et il produit des menus look plate-forme native sur toutes les versions de Windows. Télécharger ici, à partir de son site web, ou de commencer avec son introduction et précis à 100% délire.
Les résultats sont génial:
Gris, en fait, je woudn aime pas utiliser une bibliothèque tierce uniquement pour le menu contextuel. Je veux résoudre ce problème par ma propre. Mais comment? Ce serait formidable si mon menu contextuel ressemble à Vista menu et a menuItems avec des images. Que dois-je faire?
La bibliothèque de je lien est open source, ce qui signifie que vous pouvez regarder le code, voir ce qu'il fait, et l'utiliser comme un exemple d'écrire votre propre code.
OriginalL'auteur Cody Gray
Vous pouvez utiliser la fonction SetMenuItemInfo pour ajouter une icône pour les éléments de menu.
OriginalL'auteur palota