So erhalten Sie das aktuelle verwendete Farbthema von Visual Studio

7

Ich erstelle meinen eigenen IntelliSense Presenter, da das Visual Studio2012-Unterstützungsthema geändert wird. Daher möchte ich, dass meine Hintergrundfarbe des Presenters automatisch geändert werden kann, wenn das Design geändert wurde. Gibt es eine Möglichkeit, das Ereignis "theme changes" zu verfolgen oder das aktuelle Farbschema von Visual Studio zu erhalten?

    
Allen4Tech 10.04.2013, 08:22
quelle

3 Antworten

13

Ja, das ist möglich. Ich musste ein ähnliches Problem mit einer meiner Erweiterungen lösen ... Das aktuelle Thema wird in der Windows-Registrierung gespeichert. Deshalb habe ich die folgende Dienstprogrammklasse implementiert.

%Vor%

Okay; Das hilft nur, um die aktuellen Einstellungen zu verstehen ... das Abhören des Themas geändert Benachrichtigung ist ein bisschen komplizierter. Nachdem Ihr Paket geladen wurde, müssen Sie eine IVsShell-Instanz über das DTE abrufen. Sobald Sie dieses Objekt haben, können Sie die AdviceBroadcastMessages-Methode verwenden, um Ereignisbenachrichtigungen zu abonnieren. Sie müssen ein Objekt angeben, dessen Typ die IVsBroadcastMessageEvents-Schnittstelle implementiert ...

Ich möchte nicht die gesamte Implementierung posten, aber die folgenden Zeilen könnten das Schlüsselszenario verdeutlichen ...

%Vor%

Ziehen Sie auch die Implementierung von IDisposable für diesen Typ in Betracht, damit Sie die Ereignisquelle beim Abladen des Pakets abbestellen können.

So abonniere ich Ereignisbenachrichtigungen ...

%Vor%

Behalten Sie den Wert des Cookie-Parameters bei; Sie werden es brauchen, um sich erfolgreich abzumelden.

Hoffe das hilft (-:

    
Matze 13.06.2013, 17:11
quelle
7

Für VS 2015 hat sich das geändert, die Lösung @Matze funktioniert noch, aber Sie müssen die GetThemeId () - Funktion aktualisieren, um nach der Version zu suchen, und wenn es 14.0 (VS2015) an einer anderen Stelle in der Registrierung aussieht. Die Art, wie der Wert gespeichert wird, hat sich ebenfalls geändert, es ist immer noch eine Zeichenkette, aber enthält jetzt andere Werte, die durch ein '*' getrennt sind. Die Theme-GUID ist der letzte Wert in der Liste.

%Vor%     
Frank 06.10.2015 14:27
quelle
7

Ich wollte nur ein Update machen, nur für den Fall, dass noch jemand mitkommt. @Matze und @Frank sind völlig richtig. Allerdings haben sie in VS 2015 einen einfachen Weg hinzugefügt, um das Thema zu erkennen. Sie müssen also PlatformUI einbeziehen und ein super einfaches Event bekommen.

%Vor%

Sie sollten sicherstellen, dass Ihre Kontrolle wegwerfbar ist, damit Sie sich von der Veranstaltung abmelden können ...

BONUS!

Es gibt Ihnen auch einfachen Zugang zu den Farben .. selbst wenn der Benutzer sie vom Standard geändert hat. so können Sie solche Sachen tun, wenn Sie Ihre Farben einstellen

%Vor%     
Jon Z 08.12.2015 17:15
quelle