Как программно закрепить ToolWindow в надстройке Visual Studio - PullRequest
0 голосов
/ 09 сентября 2011

Я разрабатываю надстройку Visual Studio, в которой отображается окно инструментов, аналогичное обычному набору инструментов. Теперь я хотел бы, чтобы он был пристыкован так же, как обычный Toolbox, когда я его открываю. Это код, используемый для его открытия (_applicationObject и _addInInstance - это DTE2 и AddIn, полученные из аргументов OnConnection):

Windows2 wins2obj = (Windows2)_applicationObject.Windows;
Assembly asm = Assembly.GetExecutingAssembly();
string an = asm.Location;
string className = "MyAddIn.MyToolboxCtl";
object programmableObject = null;
Window windowToolWindow = wins2obj.CreateToolWindow2(_addInInstance, an,
     className, "A caption", aGuid,
    ref programmableObject);

Мне удалось закрепить это окно, установив для свойства IsFloating значение false, прежде чем оно стало видимым:

windowToolWindow.IsFloating = false;
windowToolWindow.Visible = true;

Это почти нормально, но окна пристыкованы в нижней части главного окна, где вы обычно находите выходные данные, часы, стек вызовов и подобные окна. Есть ли способ заставить его открыться слева, где вы обычно видите панель инструментов?

EDIT:

Я попытался соединить свое окно и окно панели инструментов, создав LinkedWindowFrame:

Window2 w1 = (Window2)wins2obj.Item(Constants.vsWindowKindToolbox);
Window2 frame = (Window2)wins2obj.CreateLinkedWindowFrame(w1, windowToolWindow,
                        vsLinkedWindowType.vsLinkedWindowTypeTabbed);

Результат в некотором роде аналогичен тому, чего я пытаюсь достичь, т. Е. Панель инструментов и мое окно состыкованы вместе, но получающееся окно плавает и не пристыковано к левой стороне главного окна.

1 Ответ

1 голос
/ 11 сентября 2011

Думаю, вам будет полезна следующая ссылка: Как: изменить характеристики окна В основном вам нужно будет создать / извлечь соответствующий WindowFrame и поместить в него ваше окно. Надеюсь, это поможет.

...