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.
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]).