locked
VSX FAQ: 我如何获得当前选定的项目项? RRS feed

  • 问题

  • 为了帮助大家更好地学习 Visual Studio Extensibility,微软论坛技术支持团队编辑了一些列的 "Visual Studio Extensibility 常见问题及解答" 精华帖。

    本帖的主题是:我如何获得当前选定的项目项?

    如果您觉得这个帖子对您的学习、工作有所帮助,请再把这个帖子分享给你的同学、同事和朋友。

    如果您想阅读更多的 "Visual Studio Extensibility 常见问题及解答",请打开索引页面:
    http://social.msdn.microsoft.com/Forums/zh-CN/vstudiozhchs/thread/4286da37-2984-49a0-870b-ae89f9bc7375


    如果您对我们的论坛在线支持服务有任何的意见或建议,请通过邮件告诉我们。
    MSDN 论坛好帮手 立刻免费下载  MSDN 论坛好帮手
    2011年5月13日 8:07

答案

  • 您可以使用SVsShellMonitorSelection服务来获取当前选择的IVsHierarchy,然后通过它的方法GetProjectItem获得的项目项,该论坛帖子下面的代码是Feng Chen答复的。

     

    代码示例:

    IntPtr hierarchyPtr, selectionContainerPtr;

    Object prjItemObject  = null;

    IVsMultiItemSelect mis;

    uint prjItemId;

    IVsMonitorSelection monitorSelection = (IVsMonitorSelection)Package.GetGlobalService(typeof(SVsShellMonitorSelection));

    monitorSelection.GetCurrentSelection(out hierarchyPtr, out prjItemId, out mis, out selectionContainerPtr);

    IVsHierarchy selectedHierarchy = Marshal.GetTypedObjectForIUnknown(hierarchyPtr, typeof(IVsHierarchy)) asIVsHierarchy;

    if (selectedHierarchy != null)

    {

    ErrorHandler.ThrowOnFailure(selectedHierarchy.GetProperty(prjItemId, (int)__VSHPROPID.VSHPROPID_ExtObject, out prjItemObject));

    }

    ProjectItem selectedPrjItem = prjItemObject asProjectItem;

     

    相关帖子:

    http://social.msdn.microsoft.com/Forums/en-US/vsx/thread/24f71d7f-bb7d-4df8-a00a-ff0ce6f4d48f


    如果您对我们的论坛在线支持服务有任何的意见或建议,请通过邮件告诉我们。
    MSDN 论坛好帮手 立刻免费下载  MSDN 论坛好帮手
    2011年5月13日 8:07