Wie kann ich Visual Studio verwenden, meine aktualisierte Symbol für mein NotifyIcon?
Ich bin Total ratlos, die von diesem Problem und ich weiß nicht, was zu tun ist.
Ich habe erstellt ein einfaches C# Windows Form-Anwendung mithilfe von Visual Studio 2012 Premium. Ich habe ein kleines Programm, das gestartet und erstellt ein NotifyIcon in der Taskleiste. Auf Klick auf das Symbol in der Taskleiste, ein Kontextmenü wird angezeigt, und es zeigt ein paar im Menü Optionen (Optionen, Über, usw.), wo jede option zeigt ein Formular. Ich habe zwei icon-Dateien (.ico) über die Ressourcen, die durch Rechtsklick auf mein Projekt-Element, Eigenschaften, Ressourcen. Ich programmgesteuert ändern Sie die Ikone meiner NotifyIcon, abwechselnd in den zwei verschiedenen icons. Mein problem ist, dass meine alten icons behalten Anzeige, statt meine neue, die ich Hinzugefügt haben, um das Projekt. Klar, mein Problem ist, dass die ALTEN icons behalten Anzeige--ist alles, und es gibt keine Fehler, es nur nicht zeigen, meine neuesten icons.
Die Art, wie ich bin, ändern die Symbole im code:
notifyIcon.Icon = Resources.IconA03312014; //or the other one; the numbers are the date
Ich zunächst meine icons und benutzt diese und später beschlossen, Sie zu ändern ein bisschen--ich wechselte einige Farben, etc. So dann entfernte ich die alten icons von meinem Projekt, indem Sie das Ausschließen von Projekt-option. Dann habe ich meine neue icons, die hatten verschiedene Namen. Dann habe ich aktualisiert meine beiden code-Referenzen, laden Sie die Symbole, um die Verwendung der neuen Namen. Egal was ich mache, meine neue/aktualisierte Symbole werden nicht angezeigt!
Ob ich das Programm in Visual Studio im Debug-oder Release-Modus, ist es egal. Ich kann sauber die Lösung, wieder aufzubauen, und dann führen Sie die ausführbare Datei durch anklicken direkt in Windows, und kein Unterschied. Alte Symbole werden gezeigt.
Ich habe verschiedene Sätze von Informationen online, die erklären, wie zu deaktivieren Sie die Windows-8-Symbol-cache (drei verschiedene Methoden). Ich habe gelöscht, den Cache Benachrichtigungs-Symbole in der Taskleiste als auch mit zwei verschiedenen Methoden.
Grundsätzlich, ich hab meine Lösung und schließen von Visual Studio. Ich kill Sie alle explorer-Prozesse laufen ie4uinit.exe -ClearIconCache von der Befehlszeile aus und löschen der IconCache.db-Datei. Dann lösche ich die Benachrichtigung icon-cache durch Bearbeiten der Registrierung folgenden Anweisungen ähnlich wie diese (http://www.sevenforums.com/tutorials/13102-notification-area-icons-reset.html). Dann habe ich das Herunterfahren des PCs. Beim Start von backup-und Umbau meiner Lösung und ausgeführt, die alten icons sind immer noch da, irgendwie. Die physische .ico-Dateien, die für die alten Symbole gelöscht wurden, vor langer Zeit. Jedes mal habe ich neue icons auf meine Ressourcen, die ich angelegt habe neue icon-Dateien von Grund auf neu (mit icobundl.exe) und gab Ihnen Namen eindeutig, indem Sie das Datum im Namen. Ich bin mir bewusst, dass Windows, und anscheinend ist Visual Studio auch, wie cache, um die Symbole und, wenn Sie löschen einige icon-Datei, A. ico, in Windows und benennen Sie ein weiteres Symbol Datei B. ico A. ico, B. ico-Datei das tatsächliche Symbol ändert sich zu Einem ist. Jedenfalls glaube ich nicht, der name der icon-Datei ist das Problem.
Nun, in code, wenn ich mit der gleichen Strategie und eines von meiner form der icons funktioniert es einwandfrei und das Formular zeigt meine neueste Symbol, während meine notify-Symbol zeigt immer noch die alte (und jetzt gar nicht, außer in Visual Studio la la land " - Symbol).
Also, ich habe:
...
if(firstState){
notifyIcon.Icon = Resources.IconA03312014;
optionsForm.Icon = Resources.IconA03312014;
}
else{
notifyIcon.Icon = Resources.IconB03312014;
optionsForm.Icon = Resources.IconB03312014;
}
firstState = !firstState;
...
Gibt es keine Fehler und sowohl das notifyIcon und optionsForm änderungen, aber das notify-Symbol zeigt mein ALTES Symbol, das nicht mehr existiert überall (außer irgendwo/irgendwie in VS). Die form ist Symbol für die Veränderungen in meinem aktualisierte/aktuelle Symbol.
Wenn ich kopieren meine app .exe-Datei auf einem anderen computer, und führen Sie es aus, es zeigt auch die alten Symbole für das notify-Symbol, also die alten icons sind immer noch irgendwie eingebettet in meine exe-Datei erzeugt, die von Visual Studio. Wenn ich einfach direkt laden .ico-Datei, anstelle von verweisen auf meine Projekt-Ressourcen, die neuen icons angezeigt WERDEN. Diese haben eine Art von seltsamen Ressourcen caching-Problem in Visual Studio?
Kann jemand mir bitte helfen mit diesem Problem? Ich verstehe einfach nicht wie meine alten icons sind immer noch irgendwo, und wie Sie mit Visual Studio irgendwie weiß, wie wechseln Sie! Das ist richtig, das obige Symbol swapout funktioniert perfekt für die form. Aber für das notifyIcon, wird das Symbol nicht Umschalten von "A" nach "B", aber es nutzt das alte icon und die alte B-Symbol--Symbole, die nicht existieren, nirgendwo mehr!
Ich hoffe, ich erklärte mein Problem. Ich bin sehr dankbar für jede Hilfe, die jedermann anbieten kann.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich hatte das gleiche problem vor ein paar Monaten und es fuhr mich verrückt für ein paar Stunden. Ich war so fokussiert auf das clearing auf den icon-cache und denken, dass es nur eine Art caching-Problem, dass es nicht sofort auftreten, zu mir, was das eigentliche problem war.
Die Antwort, für mich zumindest: Auch wenn man einen 16x16 version Ihres Bildes in Ihrem .ico-Datei in Visual Studio verwenden stattdessen die 32x32 Bild und verkleinere es auf 16x16, wodurch es zu verzerrt. Ich sage VS Tat es, weil bei mir lief der ausführbaren Datei auf anderen Rechnern (unterschiedliche Windows-OS -), ich sah das gleiche Verhalten, es war also nicht ein Windows 8 Problem, für mich. (Es könnte sehr wohl ein Windows-Problem ist im Allgemeinen, obwohl, ich weiß nicht. Ich habe nicht die Zeit nehmen, um zu überprüfen, was war eigentlich in der generierten .exe-Tat es enthalten MEIN 16x16 version, oder 16x16-version erzeugt durch die Skalierung nach unten meine 32px-version? Das hätte es bestätigt, denke ich...)
Mein "aha" - moment kam, als ich noch ein paar Zeilen von roten Pixeln auf jeder Größe von meinem icon-Bild, in einem anderen Abschnitt meines Symbol. So legte ich die roten Zeilen in meinem 16x16 unten. Meine 32x32 hatten die roten Zeilen in der Mitte, etc. So dann habe ich diese .ico zu meinem Projekt und dem Projekt starteten, und BAM, es war eine verzerrte version von meinem 32x32-Symbol in der Taskleiste als meine notify-Symbol. Es war kein Zweifel.
Wenn du bemerkst, dass dein notify-Symbol (16x16) sieht mehr verzerrt, als man erwarten würde, Sie könnte verwenden eine ähnliche Strategie, um zu sehen, wenn die automatische Skalierung geschieht. Wenn ich dachte mir, diese, meine schnelle Lösung war die Beurteilung ein .ico zu meinem Projekt, die NUR die 16x16-version von meine-Symbol an. Dann verwende ich die Ressource Bild nur für meine notify-Symbol. Natürlich, wenn Sie dies getan haben (haben eine 16 x 16-nur Bild) Formen, zum Beispiel, würden Sie sehen, eine sehr verzerrte Symbol in der Taskleiste, Alt-Tab-Liste, etc., da Windows keine Wahl in dieser situation, aber das erstellen der verschiedenen Symbol-Größen durch Skalierung Ihrer 16x16, weil das ist alles, was Sie geliefert. Jedenfalls, in meinem speziellen Fall, wie ich glaube, die ist Ihnen so gut, es gab keine Problem mit dem .ico für Formen-Sie zeigen die eigentlichen embedded-16x16 version des Bildes und es gibt keine "automatische " downsizing" der 32px-version.
Dass alles, was ich weiß. Ich habe nicht verbringen mehr Zeit auf dieses Thema, weil ich hatte sich zu bewegen. Ich hoffe, das jemand hilft vermeiden, dass einige icon frustration. Warum, oh warum, VS, würden Sie uns das antun!?
ich hatte das gleiche problem mit einem splash-screen.
einige, wie es nicht ändern, nach dem Auswechseln der Bild.
was ich gemacht habe, Entferne ich die Bilder dann speichern Sie das Formular.
führen Sie die app und es kam kein Bild.
dann habe ich Sie ersetzt und das problem war behoben für mich.
so können Sie vielleicht versuchen, das gleiche mit Ihnen sind Symbole.
hoffe es behebt Ihr problem .
Öffnen Sie die Datei
Resources.resx
Ihrem Projekt mit dem editor. Dort haben Sie zu ändernname="Icon1"
inname="YourIconName"
.