Come creare e utilizzare risorse in .NET


192

Come posso creare facilmente una risorsa a cui posso fare riferimento e utilizzare in varie parti del mio programma?

Il mio problema specifico è che ho un NotifyIcon di cui voglio cambiare l'icona a seconda dello stato del programma. Un problema comune, ma uno con cui ho lottato per molto tempo.

Risposte:


325

Bene, dopo aver cercato e messo insieme vari punti da StackOverflow (accidenti, adoro già questo posto), la maggior parte dei problemi erano già passati in questa fase. Sono riuscito a trovare una risposta al mio problema.

Come creare una risorsa:

Nel mio caso, voglio creare un'icona. È un processo simile, indipendentemente dal tipo di dati che si desidera aggiungere come risorsa.

  • Fare clic con il tasto destro del mouse sul progetto a cui si desidera aggiungere una risorsa. Fallo in Esplora soluzioni. Seleziona l'opzione "Proprietà" dall'elenco.
  • Fai clic sulla scheda "Risorse".
  • Il primo pulsante nella parte superiore della barra ti consentirà di selezionare il tipo di risorsa che desideri aggiungere. Dovrebbe iniziare su una stringa. Vogliamo aggiungere un'icona, quindi fai clic su di essa e seleziona "Icone" dall'elenco di opzioni.
  • Successivamente, passa al secondo pulsante, "Aggiungi risorsa". Puoi aggiungere una nuova risorsa o se hai già un'icona già creata, puoi anche aggiungere quella. Segui le istruzioni per qualsiasi opzione tu scelga.
  • A questo punto, puoi fare doppio clic sulla risorsa appena aggiunta per modificarla. Nota, le risorse vengono visualizzate anche in Esplora soluzioni e il doppio clic è altrettanto efficace.

Come usare una risorsa:

Fantastico, quindi abbiamo la nostra nuova risorsa e non vediamo l'ora di avere quelle deliziose icone che cambiano ... Come possiamo farlo? Bene, fortunati noi, C # rende questo estremamente facile.

Esiste una classe statica chiamata Properties.Resourcesche ti dà accesso a tutte le tue risorse, quindi il mio codice ha finito per essere semplice come:

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

Fatto! Finito! Tutto è semplice quando sai come, no?


grazie per questo, cercavo la stessa identica cosa. c'è un modo per incorporare i file .ico nell'eseguibile in modo che non vengano visualizzati come file separati? spero che la mia domanda abbia un senso. saluti,
Amc_rtty

1
@Andrei: è esattamente ciò che è una risorsa. Una volta aggiunto, verrà incorporato come parte dell'esempio compilato.
Matthew Scharley,

1
"... la maggior parte dei problemi erano già passati in questa fase" - Troppo vero ... Grazie per averlo messo insieme! Sapevo che era semplice ... alla fine.
roadsunknown il

1
Come nota a margine, i file di risorse sono bloccati al momento della compilazione. Quindi, cambiarli dinamicamente in fase di esecuzione fa ben poco per cambiare i valori esistenti. Utilizzare i file di configurazione, se si desidera modificare i valori in fase di esecuzione. Nel caso questo aiuti qualcuno.
Purusartha,

1
In VB.NET, si accede alle risorse tramite ad esempio "My.Resources.GreenIcon"
andy

9

Quanto sopra in realtà non ha funzionato per me come mi aspettavo con Visual Studio 2010. Non mi avrebbe permesso di accedere a Properties.Resources, ha detto che era inaccessibile a causa di problemi di autorizzazione. Alla fine ho dovuto modificare le impostazioni di Persistenza nelle proprietà della risorsa e poi ho scoperto come accedervi tramite il file Resources.Designer.cs, dove aveva un getter automatico che mi permetteva di accedere all'icona, tramite MyNamespace.Properties.Resources .NameFromAddingTheResource. Ciò restituisce un oggetto di tipo Icona, pronto per essere utilizzato.


7

Il metodo sopra funziona bene.

Un altro metodo (suppongo che il Web qui) è quello di creare la tua pagina. Aggiungi i controlli alla pagina. Quindi, mentre sei in modalità progettazione, vai a: Strumenti> Genera risorsa locale . Un file di risorse apparirà automaticamente nella soluzione con tutti i controlli nella pagina mappati nel file di risorse.

Per creare risorse per altre lingue, aggiungere la lingua di 4 caratteri alla fine del nome del file, prima dell'estensione ( Account.aspx.en-US.resx, Account.aspx.es-ES.resx ... ecc.).

Per recuperare le voci specifiche nel code-behind, è sufficiente chiamare questo metodo: GetLocalResourceObject([resource entry key/name]).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.