Получить свойства из окна свойств

Я создаю надстройку Visual Studio, и когда я выбираю узел подключения к данным в окне проводника сервера (или в таблице данных или в поле данных), есть ли способ получить значения свойств из окна свойств, показанного в Visual Studio, с помощью EnvDTE?

Мне нужно получить эти значения из этих полей: Connection string, Provider, Data type, Is Identity и т. Д.

спасибо заранее


person mursel.musabasic    schedule 21.02.2014    source источник


Ответы (1)


Вот пример кода, демонстрирующий, как получить доступ к выбору в сетке свойств. Обратите внимание, что может быть выбрано несколько объектов, а не только один:

IVsMonitorSelection selection = (IVsMonitorSelection)yourSite.GetService(typeof(SVsShellMonitorSelection)); // or yourPackage.GetGlobalService
IVsMultiItemSelect ms;
IntPtr h;
IntPtr pp;
uint itemid;

selection.GetCurrentSelection(out h, out itemid, out ms, out pp);
if (pp != IntPtr.Zero)
{
    try
    {
        ISelectionContainer container = Marshal.GetObjectForIUnknown(pp) as ISelectionContainer;
        if (container != null)
        {
            uint count;
            container.CountObjects((uint)Microsoft.VisualStudio.Shell.Interop.Constants.GETOBJS_SELECTED, out count);
            if (count == 1)
            {
                object[] objs = new object[1];
                container.GetObjects((uint)Microsoft.VisualStudio.Shell.Interop.Constants.GETOBJS_SELECTED, 1, objs);
                object selection = objs[0]; // selection is here
            }
        }
    }
    finally
    {
        Marshal.Release(pp);
    }
}
person Simon Mourier    schedule 21.02.2014
comment
Вот и все .. Я попал в интерфейс ISelectionContainer, а потом Маршал меня убил :) - person mursel.musabasic; 21.02.2014