Страница 1 из 1

Использование Dockable Window

Добавлено: 25 апр 2012, 14:15
BodyZ
Доброго времени суток.
Подскажите пожалуйста как можно организовать передачу параметров
из Dockable Window в обработчик Tool или Command.
Заранее спасибо

Re: Использование Dockable Window

Добавлено: 25 апр 2012, 14:54
kuzkok
У интерфейса IDockableWindowDef, который наследуется для создания DockableWindow, есть свойство UserData
через него можно передавать либо просто строку либо объект с нужными полями.
Код объявления класса DockableWindow

Код: Выделить всё

[Guid("4b339c3c-de91-479a-abdd-21ea16520921")]
[ClassInterface(ClassInterfaceType.None)]
[ProgId("Namespace.MyDockableClass")]
public partial class MyDockableClass: UserControl, IDockableWindowDef
{
    ...
    object IDockableWindowDef.UserData
    {
        get { return "MyData"; }
    }
    ...
}
Код OnCreate для Tool, можно выполнить в любом другом методе, здесь для наглядности и понятности откуда взялась переменная m_application

Код: Выделить всё

public override void OnCreate(object hook)
{
    m_application = hook as IApplication;
    IDockableWindowManager dockWindowManager = m_application as IDockableWindowManager;
    if (dockWindowManager != null)
    {
        UID windowID = new UIDClass();
        windowID.Value = "{4b339c3c-de91-479a-abdd-21ea16520921}";//UUID класса с DockableWindow
        DockableWindow identifyDockWindow = dockWindowManager.GetDockableWindow(windowID);
        if (identifyDockWindow != null)
        {
            object userData = identifyDockWindow.UserData;//здесь объект можно привести к нужному типу
            MessageBox.Show(userData.ToString());
        }
    }           
}

Re: Использование Dockable Window

Добавлено: 25 апр 2012, 15:06
BodyZ
Спасибо. Все работает