Warum vergisst Visual Studio 2008, wo das Fenster meines Add-Ins angedockt wird?

8

Ich habe ein einfaches Add-In für Visual Studio 2008 geschrieben, das ein andockbares Fenster öffnet.

Sie können die Quelle und ein Binär-Installationsprogramm herunterladen, indem Sie hier klicken.

Die Art des Add-Ins bedeutet, dass es im Idealfall neben der Stelle, an der Sie Ihre Quelle bearbeiten, angedockt bleibt. Aber manchmal wird es bei einigen Installationen nicht angedockt bleiben. Sie führen VS aus, Sie docken mein Fenster an, Sie beenden VS, Sie starten VS neu und dang es - der Fensterbereich wird wieder aktiviert. Auf einigen Rechnern muss ich es jedes Mal neu andocken.

Aber bei anderen Installationen bleibt es angedockt, wo immer ich es hinstelle. Ich dachte ursprünglich, es könnte ein Unterschied zwischen Vista und XP sein, aber jetzt habe ich Berichte, dass es auch auf XP nicht mehr funktioniert.

Nach dem, was ich gelesen habe (und der Tatsache, dass es manchmal angedockt bleibt), habe ich den Eindruck, dass VS sich darum kümmern sollte, den Docking-Zustand für mich zu speichern. Aber das tut es nicht. Und noch andere Plug-Ins auf der gleichen VS-Installation haben dieses Problem nicht. Also muss ich etwas tun, um die Situation zu verbessern.

Ich vermute, dass der einzige relevante Teil meines Codes das ist:

%Vor%

(Die MSDN-Dokumentation schlägt vor, dass das Fenster in OnConnection erstellt werden sollte, aber wenn ich das tue, wird das Fenster meistens nicht angezeigt.)

    
Daniel Earwicker 19.11.2008, 11:05
quelle

4 Antworten

10

Ich habe einige der gleichen Docking-Probleme mit TeamReview ( Ссылка ). Ich kann nicht sagen, warum es passiert, aber ich kann Ihnen helfen, auf Code zu verweisen, der immer Ihr Fenster in OnStartupComplete schreibt. Wenn Sie einen bestimmten Ort haben, in dem Sie ihn haben möchten, können Sie ihn nach dem Erstellen Ihres toolWin und vor dem Aufruf der Visible-Eigenschaft mit einem Frame verknüpfen. Sie müssen überprüfen, welche Konstanten Ihren Bedingungen für die Methoden CreateLinkedWindowFrame und SetKind entsprechen. Vielleicht möchten Sie Ihr Fenster auch mit etwas anderem als MainWindow verknüpfen, wie zB dem SolutionExplorer

%Vor%

Dieses Beispiel ähnelt: Ссылка 2008 - & gt; TeamReview - & gt; Befehl - & gt; ShowReplayWindowCommand.cs - & gt; ShowForm ()

Hier ist ein gutes Microsoft-Beispiel , um die Ausgabe zu verknüpfen Fenster, das Befehlsfenster und der Projektmappen-Explorer. Es manipuliert dann die Breite und Höhe dieser verknüpften Fenster und es dockt sie schließlich alle aus dem verknüpften Fensterrahmen.

    
JB Brown 23.11.2008, 22:35
quelle
1

Ich habe das gleiche Problem wie der Autor. Ich habe festgestellt, dass Visual Studio 2005 die Position des Werkzeugfensters nur nach Sitzungen vergisst, in denen das Debugging verwendet wurde.

Die angenommene Antwort hilft nicht viel, weil das Werkzeugfenster immer unten angedockt wird. Ich möchte wirklich, dass die Benutzer wählen können, wo sie andocken möchten, und ihre Präferenz speichern, indem sie einfach dort andocken, wo sie möchten.

    
Juozas Kontvainis 10.02.2009 15:16
quelle
1

Hier ist, was mir geholfen hat. Ich benutze Visual Studio 2005, aber dies könnte auch Ihnen helfen.

%Vor%     
Juozas Kontvainis 18.02.2009 14:02
quelle
0

Die Sichtbarkeit des Werkzeugfensters auf falsch einzustellen funktioniert sehr gut. Danke JK.

Um JKs Frage nach dem Abdocken nach dem Debuggen zu beantworten, frage ich mich, ob der devenv.exe / resetaddin-Schalter in den Debug-Eigenschaften der Projekte dazu führt, dass dies geschieht. Es setzt natürlich alles zurück, was das Addin erzeugt.

Idee: Der Schalter / resetaddin wird beim Erstellen eines Add-in-Projekts automatisch zur Debug-Konfiguration hinzugefügt. Ich setze normalerweise ein ungültiges Zeichen wie ein 'x' in die Schriftart des Klassennamens im Befehl / resetaddin, so dass es leicht wieder aktiviert werden kann, indem das x entfernt wird, wenn wir einen Hard-Reset wünschen. Es ist normalerweise nicht nötig, jedes Mal einen Reset durchzuführen!

    
Visual Micro 19.08.2012 17:47
quelle