Como criar e usar resources no .NET

Como faço para criar um recurso que possa referenciar e usar em várias partes do meu programa com facilidade?

Meu problema específico é que eu tenho um NotifyIcon que eu quero mudar o ícone de dependendo do estado do programa. Um problema comum, mas com o qual estou lutando há muito tempo.

   

Bem, depois de pesquisar e reunir vários pontos de todo StackOverflow (caramba, eu amo este lugar já), a maioria dos problemas já haviam passado dessa fase. Eu consegui descobrir uma resposta para o meu problema.

Como criar um recurso

No meu caso, quero criar um ícone. É um processo semelhante, independentemente do tipo de dados que você deseja adicionar como um recurso.

  • Clique com o botão direito do mouse no projeto ao qual você deseja adicionar um recurso. Faça isso no Solution Explorer. Selecione a opção “Propriedades” na lista.
  • Clique na guia “Recursos”.
  • O primeiro botão na parte superior da barra permitirá que você selecione o tipo de recurso que deseja adicionar. Deve começar na string. Queremos adicionar um ícone, então clique nele e selecione “Ícones” na lista de opções.
  • Em seguida, vá para o segundo botão, “Adicionar recurso”. Você pode adicionar um novo recurso ou, se já tiver um ícone, poderá adicioná-lo também. Siga as instruções para qualquer opção que você escolher.
  • Neste ponto, você pode clicar duas vezes no recurso recém-adicionado para editá-lo. Observe que os resources também são exibidos no Solution Explorer, e o clique duplo é tão eficaz quanto

Como usar um recurso.

Ótimo, então nós temos nosso novo recurso e estamos ansiosos para ter aqueles lindos icons mudando … Como fazemos isso? Bem, sorte nossa, o C # torna isso extremamente fácil.

Existe uma class estática chamada Properties.Resources que dá access a todos os seus resources, então meu código acabou sendo tão simples quanto:

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

Feito! Finis! Tudo é simples quando você sabe como, não?

O acima não funcionou realmente para mim como eu esperava com o Visual Studio 2010. Ele não me deixaria acessar Properties.Resources, disse que estava inacessível devido a problemas de permissão. Eu finalmente tive que alterar as configurações de persistência nas propriedades do recurso e, em seguida, eu encontrei como acessá-lo através do arquivo Resources.Designer.cs, onde tinha um getter automático que me permite acessar o ícone, via MyNamespace.Properties.Resources .NameFromAddingTheResource. Isso retorna um object do tipo Icon, pronto para ser usado.

O método acima funciona bem.

Outro método (estou assumindo web aqui) é criar sua página. Adicione controles à página. Então, enquanto estiver no modo de design, vá para: Ferramentas> Gerar recurso local. Um arquivo de resources aparecerá automaticamente na solução com todos os controles na página mapeada no arquivo de resources.

Para criar resources para outros idiomas, anexe o idioma de 4 caracteres ao final do nome do arquivo, antes da extensão (Account.aspx.en-US.resx, Account.aspx.es-ES.resx … etc).

Para recuperar inputs específicas no code-behind, simplesmente chame este método: GetLocalResourceObject ([resource entry key / name]).