Как программно прикрепить окно надстройки Visual Studio к вкладке? - PullRequest
1 голос
/ 09 сентября 2010

Я создаю небольшой плагин в надежде сделать его веселым и легким в использовании графики в Visual Studio.Было одно маленькое раздражение, хотя, я не могу понять, как прикрепить мое недавно созданное окно к панели вкладок.

Это все F #, но решение должно состоять из пары вызовов функций, поэтому, пожалуйста, не стесняйтесь использовать C # или VB в своем ответе.

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

Я думаю, мне просто нужно связатьэто к чему-то в приложении объекта.Единственная проблема в том, что.

Ответы [ 2 ]

1 голос
/ 10 сентября 2010

Насколько я понимаю, единственный способ контролировать положение окна инструмента - предоставить его через VSPackage, а не через AddIn (см. http://msdn.microsoft.com/en-us/library/bb166406.aspx и http://msdn.microsoft.com/en-us/library/bb165452.aspx для получения дополнительной информации).

Я полагаю, что причиной этого ограничения является то, что положения отдельных окон инструментов контролируются пользователем; даже если вы предоставляете окно инструментов через VSPackage и указываете его положение с помощью магии реестра, как описано в приведенных выше ссылках, вы все равно контролируете только место первого появления окна инструментов. После этого местоположение всегда будет исходить из того места, куда пользователь переместил ваше окно инструментов, и это намеренно невозможно переопределить.

Возможно, мне не хватает некоторых новых механизмов VS2010.

0 голосов
/ 14 сентября 2010

Я, кажется, понял это:

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