Cómo crear y utilizar recursos in.NET


¿Cómo puedo crear un recurso que pueda referenciar y usar en varias partes de mi programa fácilmente?

Mi problema es que tengo un NotifyIcon que quiero cambiar el icono de función del estado del programa. Un problema común, pero con el que he estado luchando durante mucho tiempo.

Author: John Saunders, 2008-09-18

3 answers

Bueno, después de buscar y juntar varios puntos de alrededor de StackOverflow (caramba, ya me encanta este lugar), la mayoría de los problemas ya habían pasado esta etapa. Sin embargo, me las arreglé para encontrar una respuesta a mi problema.

Cómo crear un recurso.

En mi caso, quiero crear un icono. Es un proceso similar, sin importar qué tipo de datos quieras agregar como recurso.

  • Haga clic con el botón derecho en el proyecto que desea agregar un recurso a. Haga esto en el Explorador de soluciones. Seleccione la opción "Propiedades" de la lista.
  • Haga clic en la pestaña "Recursos".
  • El primer botón en la parte superior de la barra le permitirá seleccionar el tipo de recurso que desea agregar. Debe comenzar en cadena. Queremos añadir un icono, así que haga clic en él y seleccione "Iconos" de la lista de opciones.
  • A continuación, vaya al segundo botón, "Agregar recurso". Puede agregar un nuevo recurso o, si ya tiene un icono hecho, puede agregar eso también. Siga las indicaciones para cualquier opción que elija.
  • En este punto, puede hacer doble clic en el recurso recién agregado para editarlo. Nota, los recursos también aparecen en el Explorador de soluciones, y hacer doble clic allí es igual de efectivo

Cómo usar un recurso.

Genial, así que tenemos nuestro nuevo recurso y estamos ansiosos por tener esos encantadores iconos cambiantes... ¿Cómo lo hacemos? Bueno, por suerte, C# hace esto extremadamente fácil.

Hay una estática clase llamada Properties.Resources que te da acceso a todos tus recursos, por lo que mi código terminó siendo tan simple como:

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

Hecho! Finis! Todo es simple cuando sabes cómo, ¿no?

 253
Author: Matthew Scharley,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-08-24 22:26:14

Lo anterior en realidad no funcionó para mí como esperaba con Visual Studio 2010. No me dejaba acceder a las propiedades.Recursos, dijo que era inaccesible debido a problemas de permisos. Finalmente tuve que cambiar la configuración de Persistencia en las propiedades del recurso y luego encontré cómo acceder a él a través de los Recursos.Diseñador.archivo cs, donde tenía un getter automático que me permitía acceder al icono, a través de MyNamespace.Propiedad.Recurso.Nombre de añadir la fuente. Que devuelve un objeto de escriba el icono, listo para usar.

 8
Author: Quinxy von Besiex,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-06-14 19:38:25

El método anterior funciona bien.

Otro método (estoy asumiendo web aquí) es crear su página. Añadir controles a la página. Luego, mientras esté en el modo de diseño, vaya a: Herramientas > Generar recurso local. Un archivo de recursos aparecerá automáticamente en la solución con todos los controles de la página asignados en el archivo de recursos.

Para crear recursos para otros idiomas, agregue el idioma de 4 caracteres al final del nombre del archivo, antes de la extensión (Cuenta.aspx.en-US.resx, Cuenta.aspx.es-es.resx...etc).

Para recuperar entradas específicas en el codebehind, simplemente llame a este método: GetLocalResourceObject([resource entry key/name]).

 6
Author: Chuck Conway,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-09-18 07:35:48