Die Vermeidung von duplicate Symbol Ressourcen in einer .NET (C#) - Projekt
Ich bin mit Visual C# 2008 Express. Ich würde gerne mit dem gleichen icon für die Anwendung (dh, das Symbol für die .exe), und für die Haupt-form. Leider, VC# scheint nicht sehr schlau zu sein, und besteht auf das duplizieren-Symbol Daten.
Scheint es nicht zu sein, eine Möglichkeit der Auswahl einer "schon eingebaut" - Symbol für die Verwendung in der Formular-oder Projekt-Symbol (nur die Auswahl einer Datei) und verwenden Sie die gleiche Datei für beide Symbole nur bettet die Datei doppelt so weit wie ich sehen kann. Es ist keine große Sache (Festplattenplatz ist Billig, jetzt nach rechts?), aber es nervt mich.
Irgendeine Idee, wie dies zu vermeiden? Gibt es eine Möglichkeit, programmgesteuert laden Sie die ausführbare Datei ist Symbol für den Einsatz, wenn das Formular aufgebaut ist, sagen? Ein paar der Beiträge im forum über ähnliche Dinge, die scheinen zu behaupten, dass .NET-Ressourcen nicht die normale alte Windows-Ressource-system-gibt es eine Möglichkeit aus, die im Rahmen der immer an die alten Ressourcen? Oder muss ich zum binden der Win32-API-Funktionen, es zu tun?
- Warum nicht die Vererbung verwenden? Definieren Sie das Symbol in einem benutzerdefinierten Formular-Klasse und benutze es überall.
- Ich erinnere mich an meine Delphi-Programmierung... mal selbst.Symbol = Application.Symbol 😛 ... zu schwer ist .NET 😀
- mögliche Duplikate von eine einfache Möglichkeit, verwenden Sie icons aus Ressourcen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Yeah, es ist ziemlich nervig. Aber das problem mit der vorgeschlagenen Antwort-Symbol.ExtractAssociatedIcon ist, dass es, um wieder das 32x32 icon, und dann neu berechnen, um eine 16 x 16-Symbol in Ihrer Formen-Fenster oder auf der Taskleiste, das wird schrecklich Aussehen, es sei denn, Ihr 32x32-icon ist sehr geschickt konstruiert.
Den Weg, die ich mache es ist mit interop (setzen Sie die erste Zeile in Ihrem Formular-Konstruktor):
Aber das ist nicht so toll, entweder, weil Sie tun wollen das 32x32-icon für Dinge wie die Alt-Tab-icon-Liste. So dass Sie wirklich brauchen, um zu extrahieren die gesamte Symbol, das eine größere Aufgabe. Vielleicht gibt es eine einfache Weise zu kombinieren, die zwei Symbole in einem. Oder Sie können tun, wie diese codeproject Programm, die Auszüge die ganze Ikone in den ersten Platz mit einem riesigen Haufen code.
Du hast Recht, und es ist eher nervig.
Müssen Sie zum laden der icons selbst, anstatt sich auf designer-generierten code. Speichern Sie das Symbol als ein Projekt als eine Ressource, dann laden Sie die Ressource in der form
Icon
Eigenschaft in der form Konstruktor:Du suchst
Symbol.ExtractAssociatedIcon
. Rufen Sie die Weitergabe Ihrer ausführbar:Ich denke, in vielen Fällen, darunter eine doppelte Symbol wird am Ende des Tages effizienter als der Versuch, Auszug aus der nicht verwalteten Ressource, die - wenn man Sie nicht verwenden können-Symbol.ExtractAssociatedIcon für UNC-Pfade.
Ich hatte ein ähnliches problem.
Habe ich-und exe-icon ich verwenden möchte für Unterformulare ohne Erhöhung der Dateigröße.
Ich weiß nicht, ob dies nützlich ist, aber ich möchte es trotzdem.