【发布时间】:2017-08-30 15:49:33
【问题描述】:
我已经构建了一个 Visual Studio 扩展,它将一个菜单项添加到“表”节点的上下文菜单和服务器资源管理器数据连接部分中的每个子节点。
我已经连接了菜单项,以便在菜单出现之前触发 BeforeQueryStatus 事件,这样我就可以动态控制菜单项的状态,使其启用/禁用或选择是否应该显示菜单项。
在 BeforeQueryStatus 事件和调用处理程序中,我需要访问有关所选节点所代表的对象的信息。我需要知道实际数据连接的 Connection String 属性,它在“Tables”父节点中表示。
如果所选节点是表节点(“表”的子节点),我还需要知道该节点所代表的表名和架构。
我尝试查看各种对象,但似乎无法找到我想要的对象。任何帮助表示赞赏。这是我的出发点:
private void Mnu_BeforeQueryStatus(object sender, EventArgs e)
{
OleMenuCommand mnu = (OleMenuCommand)sender;
EnvDTE.DTE service = (EnvDTE.DTE)this.ServiceProvider.GetService(typeof(EnvDTE.DTE));
EnvDTE.ContextAttributes ctx = service.ContextAttributes;
EnvDTE.Window w = service.ActiveWindow;
//EnvDTE.Properties p = service.Properties.;
EnvDTE.SelectedItems si = service.SelectedItems;
EnvDTE.ProjectItem pi = w.ProjectItem; //null
var selection = w.Selection; //null
var obj = w.Object;
var objk = w.ObjectKind;
}
【问题讨论】:
标签: visual-studio visual-studio-2017 visual-studio-extensions