So erstellen und verwenden Sie Ressourcen in .NET

192

Wie erstelle ich eine Ressource, auf die ich in verschiedenen Teilen meines Programms problemlos verweisen und sie verwenden kann?

Mein spezielles Problem ist, dass ich ein NotifyIcon habe, dessen Symbol ich je nach Status des Programms ändern möchte. Ein häufiges Problem, mit dem ich aber schon lange zu kämpfen habe.

Matthew Scharley
quelle

Antworten:

325

Nun, nachdem ich verschiedene Punkte aus StackOverflow durchsucht und zusammengeschustert hatte (gee, ich liebe diesen Ort bereits), waren die meisten Probleme bereits hinter dieser Phase. Ich habe es jedoch geschafft, eine Antwort auf mein Problem zu finden.

So erstellen Sie eine Ressource:

In meinem Fall möchte ich ein Symbol erstellen. Es ist ein ähnlicher Prozess, unabhängig davon, welche Art von Daten Sie als Ressource hinzufügen möchten.

  • Klicken Sie mit der rechten Maustaste auf das Projekt, dem Sie eine Ressource hinzufügen möchten. Tun Sie dies im Projektmappen-Explorer. Wählen Sie die Option "Eigenschaften" aus der Liste.
  • Klicken Sie auf die Registerkarte "Ressourcen".
  • Mit der ersten Schaltfläche oben in der Leiste können Sie den Ressourcentyp auswählen, den Sie hinzufügen möchten. Es sollte am String beginnen. Wir möchten ein Symbol hinzufügen, klicken Sie also darauf und wählen Sie "Symbole" aus der Liste der Optionen.
  • Fahren Sie als Nächstes mit der zweiten Schaltfläche "Ressource hinzufügen" fort. Sie können entweder eine neue Ressource hinzufügen oder, wenn Sie bereits ein Symbol erstellt haben, diese hinzufügen. Befolgen Sie die Anweisungen für die von Ihnen gewählte Option.
  • Zu diesem Zeitpunkt können Sie auf die neu hinzugefügte Ressource doppelklicken, um sie zu bearbeiten. Beachten Sie, dass Ressourcen auch im Projektmappen-Explorer angezeigt werden und ein Doppelklick dort genauso effektiv ist.

So verwenden Sie eine Ressource:

Großartig, also haben wir unsere neue Ressource und es juckt uns, diese schönen, sich ändernden Symbole zu haben ... Wie machen wir das? Glücklicherweise macht C # dies außerordentlich einfach.

Es gibt eine statische Klasse namens Properties.Resources, mit der Sie auf alle Ihre Ressourcen zugreifen können. Mein Code war also so einfach wie:

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

Getan! Fertig! Alles ist einfach, wenn Sie wissen wie, nicht wahr?

Matthew Scharley
quelle
danke dafür, suchte genau das gleiche. Gibt es eine Möglichkeit, die .ico-Dateien in die ausführbare Datei einzubetten, damit sie nicht als separate Dateien angezeigt werden? Ich hoffe meine Frage macht Sinn. Grüße,
Amc_rtty
1
@Andrei: Genau das ist eine Ressource. Sobald es hinzugefügt wurde, wird es als Teil der kompilierten Exe eingebettet.
Matthew Scharley
1
"... die meisten Probleme waren bereits hinter dieser Phase" - Too True ... Danke, dass Sie dies zusammengestellt haben! Ich wusste, dass es einfach war ... am Ende.
Straßen unbekannt
1
Nebenbei bemerkt, Ressourcendateien werden beim Kompilieren gesperrt. Wenn Sie sie zur Laufzeit dynamisch ändern, werden die vorhandenen Werte kaum geändert. Verwenden Sie Konfigurationsdateien, wenn Sie Werte zur Laufzeit ändern möchten. Falls dies jemandem hilft.
Purusartha
1
In VB.NET werden Ressourcen über zB „My.Resources.GreenIcon“ zugegriffen
andy
9

Das oben Genannte funktionierte bei mir nicht so, wie ich es mit Visual Studio 2010 erwartet hatte. Ich konnte nicht auf Properties.Resources zugreifen, da aufgrund von Berechtigungsproblemen kein Zugriff möglich war. Letztendlich musste ich die Persistenzeinstellungen in den Eigenschaften der Ressource ändern und fand dann heraus, wie ich über die Datei Resources.Designer.cs darauf zugreifen kann. Dort gab es einen automatischen Getter, mit dem ich über MyNamespace.Properties.Resources auf das Symbol zugreifen konnte .NameFromAddingTheResource. Das gibt ein Objekt vom Typ Icon zurück, das nur zur Verwendung bereit ist.

Quinxy von Besiex
quelle
7

Die obige Methode funktioniert gut.

Eine andere Methode (ich gehe hier von Web aus) besteht darin, Ihre Seite zu erstellen. Fügen Sie der Seite Steuerelemente hinzu. Gehen Sie dann im Entwurfsmodus zu: Extras> Lokale Ressource generieren . In der Lösung wird automatisch eine Ressourcendatei mit allen Steuerelementen auf der Seite angezeigt, die der Ressourcendatei zugeordnet sind.

Um Ressourcen für andere Sprachen zu erstellen, hängen Sie die 4 -stellige Sprache vor der Erweiterung an das Ende des Dateinamens an ( Account.aspx.en-US.resx, Account.aspx.es-ES.resx ... usw.).

Um bestimmte Einträge im CodeBehind abzurufen, rufen Sie einfach diese Methode auf : GetLocalResourceObject([resource entry key/name]).

Chuck Conway
quelle