Visual Studio 2010扩展获取选定文本

4

我正在编写自己的扩展程序。我已经创建了一个工具栏按钮。我使用的模板是“Visual Studio Package”,在向导期间有一个选项可以创建一个命令按钮(或类似的东西)。

所以这个按钮出现了,但我不知道如何获取当前文档或文档中选定的文本。

如果有帮助,将不胜感激。

1个回答

8
有两种方法可以解决这个问题:
  1. 全局处理按钮,并使用 DTE 获取当前文档 (DTE.ActiveDocument) 和所选文本 (((TextDocument)activeDoc).Selection.Text)。您可以通过编写以下代码在包中获取顶层 DTE 对象:DTE dte = GetService(typeof(SDTE)) as DTE; 请注意,活动文档可能为 null
  2. 在编辑器级别创建命令处理程序来处理给定的命令。我编写的 Align Assignments 扩展程序 (源代码) 就是一个示例。以下是 命令筛选器 的样子。

谢谢,DTE dte = GetService(typeof(SDTE)) as DTE; 恰好是我想要的,我一直在尝试使用 GetService。有没有资源列出可以传递的所有内容以及它们的功能? - Chris McGrath
1
一个技巧是寻找像SDTE这样的接口;“S”代表“服务”,并用作卡在服务提供程序中的对象的键。请查看MSDN上的此命名空间(向下滚动页面,直到找到以SVs开头的接口)。 - Noah Richards
我还应该提到:每个都至少映射到一个接口,但有些可以映射到多个。例如,SVsUIShell映射到IVsUIShellIVsUIShell2...直到4。 - Noah Richards
需要注意的是,只有在头文件中包含了 using EnvDTE; 才能使用 DTE。同样的情况也适用于 EnvDTE.TextSelection 和其他相关内容。 - Pascal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接