首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获取VS Server Explorer窗口DDEX的选定连接节点对象

如何获取VS Server Explorer窗口DDEX的选定连接节点对象
EN

Stack Overflow用户
提问于 2013-03-21 15:09:27
回答 1查看 589关注 0票数 1

我正在为我的VS扩展的服务器资源管理器中的连接节点添加一些选项。对于我添加的一个菜单选项,我需要获取所选连接的连接字符串,因此我尝试通过在BeforeQueryStatus事件和命令处理程序方法中添加一些代码来实现此目的。但是看起来我遗漏了一些东西,因为每次我想要获取DataViewHierarchyAccessor的实例时,我总是得到一个空值。虽然如果我做同样的事情,但在较低级别的节点中工作得很好。我使用了以下代码,但没有成功:

IVsDataExplorerNodeSelection nodeSelection = (IVsDataExplorerNodeSelection)Package.GetGlobalService(typeof(IVsDataExplorerNodeSelection));

IVsUIHierarchy hierarchy = Marshal.GetTypedObjectForIUnknown(hierarchyPtr,IVsUIHierarchy as (IVsUIHierarchy))as IVsUIHierarchy;

是否有人对Server Explorer窗口的Connection Node执行了类似的操作?

更新:

看起来我在这方面取得了一些进展,我刚刚尝试了一下:

代码语言:javascript
复制
EnvDTE80.DTE2 _applicationObject = GetDTE2();
UIHierarchy uih = _applicationObject.ToolWindows.GetToolWindow("Server Explorer") as UIHierarchy;
Array selectedItems = (Array)uih.SelectedItems;
if (null != selectedItems)
    {
        foreach (UIHierarchyItem selItem in selectedItems)
        {
            SelectedItem prjItem = selItem.Object as EnvDTE.SelectedItem;
            string name = prjItem.Name;
        }
    }

现在我的问题是,是否有更好的类型来转换selectedItems列表?而不是EnvDTE.SelectedItem。

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-26 05:26:57

将我的问题标记为已回答,因为我发布的代码做到了这一点。

代码语言:javascript
复制
EnvDTE80.DTE2 _applicationObject = GetDTE2();
UIHierarchy uih = _applicationObject.ToolWindows.GetToolWindow("Server Explorer") as UIHierarchy;
Array selectedItems = (Array)uih.SelectedItems;
if (null != selectedItems)
{
    foreach (UIHierarchyItem selItem in selectedItems)
    {
        SelectedItem prjItem = selItem.Object as EnvDTE.SelectedItem;
        string name = prjItem.Name;
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15541438

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档