Я разрабатываю надстройку 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);
Результат в некотором роде аналогичен тому, чего я пытаюсь достичь, т. Е. Панель инструментов и мое окно состыкованы вместе, но получающееся окно плавает и не пристыковано к левой стороне главного окна.