/ / Jak programowo dołączyć okno dodatku programu Visual Studio do karty? - .net, visual-studio, visual-studio-2010, f #, dodatek

W jaki sposób programowo dołączyć okno dodatku Visual Studio do karty? - .net, visual-studio, visual-studio-2010, f #, dodatek

Tworzę mały dodatek w nadziei na zrobieniejest przyjemna i łatwa do grania z grafiką w programie Visual Studio. Pojawiła się jednak jedna drobna irytacja, nie mogę pojąć, jak dołączyć nowo utworzone okno do paska kart.

To wszystko jest F #, ale rozwiązaniem powinno być tylko kilka wywołań funkcji, więc nie krępuj się używać C # lub VB w swojej odpowiedzi.

type WindowManager(applicationObject: DTE2, addInInstance: AddIn) =
member this.CreateWindow(control: Type, caption) =
let windowInterface = applicationObject.Windows :?> Windows2
let tempObj = ref null
let assemblyLocation = System.Reflection.Assembly.GetExecutingAssembly().Location
let className = control.FullName
let instanceGuid = System.Guid.NewGuid().ToString("B")
let toolWindow = windowInterface.CreateToolWindow2( addInInstance, assemblyLocation, className, caption, instanceGuid, tempObj)
toolWindow.Visible <- true

Myślę, że po prostu muszę to powiązać z czymś w applicationObject. Jedynym problemem jest to, co.

Odpowiedzi:

1 dla odpowiedzi № 1

Rozumiem, że jedynym sposobem kontrolowania pozycji okna narzędzia jest dostarczenie go za pośrednictwem pakietu VSP, a nie przez dodatek (patrz http://msdn.microsoft.com/en-us/library/bb166406.aspx i http://msdn.microsoft.com/en-us/library/bb165452.aspx po więcej informacji).

Uważam, że powodem tego ograniczenia jestże pozycje poszczególnych okien narzędzi są kontrolowane przez użytkownika; nawet jeśli udostępnisz okno narzędzia za pośrednictwem VSPackage i określisz jego położenie za pomocą magii rejestru, jak opisano w powyższych linkach, nadal kontrolujesz tylko lokalizację pierwszego pojawienia się okna narzędzia. Następnie lokalizacja będzie zawsze pochodzić z miejsca, w którym użytkownik przeniósł okno narzędzi, a tego celowo nie można zastąpić.

Mogę jednak brakować niektórych nowych mechanizmów VS2010.


0 dla odpowiedzi nr 2

Wydaje mi się, że to rozgryzłem:

toolWindow.Linkable <- false
toolWindow.WindowState <- vsWindowState.vsWindowStateMaximize
toolWindow.Visible <- true