web-dev-qa-db-fra.com

Comment créer et utiliser des ressources dans .NET

Comment créer une ressource que je peux référencer et utiliser facilement dans diverses parties de mon programme?

Mon problème spécifique est que j'ai un NotifyIcon que je veux changer l'icône en fonction de l'état du programme. Un problème commun, mais avec lequel je me bats depuis longtemps.

168
Matthew Scharley

Eh bien, après avoir cherché autour de StackOverflow (et adore, j'aime déjà cet endroit), la plupart des problèmes étaient déjà passés. J'ai cependant réussi à trouver une réponse à mon problème.

Comment créer une ressource:

Dans mon cas, je veux créer une icône. Il s'agit d'un processus similaire, quel que soit le type de données que vous souhaitez ajouter en tant que ressource.

  • Cliquez avec le bouton droit sur le projet auquel vous souhaitez ajouter une ressource. Faites cela dans l'Explorateur de solutions. Sélectionnez l'option "Propriétés" dans la liste.
  • Cliquez sur l'onglet "Ressources".
  • Le premier bouton en haut de la barre vous permet de sélectionner le type de ressource que vous souhaitez ajouter. Il devrait commencer sur une chaîne. Nous voulons ajouter une icône, alors cliquez dessus et sélectionnez "Icônes" dans la liste des options.
  • Ensuite, passez au deuxième bouton, "Ajouter une ressource". Vous pouvez soit ajouter une nouvelle ressource, ou si vous avez déjà une icône déjà créée, vous pouvez aussi l'ajouter. Suivez les invites pour l'option que vous choisissez.
  • À ce stade, vous pouvez double-cliquer sur la ressource nouvellement ajoutée pour la modifier. Remarque: les ressources apparaissent également dans l'Explorateur de solutions et un double-clic est tout aussi efficace.

Comment utiliser une ressource:

Génial, nous avons donc notre nouvelle ressource et nous avons hâte d’avoir ces jolies icônes qui changent ... Comment faisons-nous cela? Heureusement pour nous, C # rend cela extrêmement facile.

Il existe une classe statique appelée Properties.Resources qui vous donne accès à toutes vos ressources. Mon code a donc été aussi simple que:

paused = !paused;
if (paused)
    notifyIcon.Icon = Properties.Resources.RedIcon;
else
    notifyIcon.Icon = Properties.Resources.GreenIcon;

Terminé! Fini! Tout est simple quand on sait comment, n'est-ce pas?

287
Matthew Scharley

Ce qui précède ne fonctionnait pas pour moi comme je m'y attendais avec Visual Studio 2010. Il ne me permettait pas d'accéder à Properties.Resources, car il était inaccessible en raison de problèmes d'autorisation. J'ai finalement dû modifier les paramètres de persistance dans les propriétés de la ressource, puis j'ai trouvé comment y accéder via le fichier Resources.Designer.cs, où il y avait un getter automatique qui me permettait d'accéder à l'icône via MyNamespace.Properties.Resources. .NameFromAddingTheResource. Cela retourne un objet de type Icon, prêt à être utilisé.

8
Quinxy von Besiex

La méthode ci-dessus fonctionne bien.

Une autre méthode (je suppose Web ici) consiste à créer votre page. Ajouter des contrôles à la page. Ensuite, en mode conception, accédez à: Outils> Générer une ressource locale. Un fichier de ressources apparaîtra automatiquement dans la solution avec tous les contrôles de la page mappée dans le fichier de ressources.

Pour créer des ressources pour d'autres langues, ajoutez la langue à 4 caractères à la fin du nom du fichier, avant l'extension (Account.aspx.en-US.resx, Account.aspx.es-ES.resx ... etc.).

Pour récupérer des entrées spécifiques dans le codebehind, appelez simplement cette méthode: GetLocalResourceObject ([clé d'entrée de ressource/nom]).

6
Chuck Conway