VS 2010插件:在编辑器中获取所选文本

时间:2011-01-23 03:42:03

标签: visual-studio-2010 visual-studio-addins

Coders,我正在为VS2010开发一个插件,我正在尝试在代码编辑器中获取所选文本。到目前为止,我一直在搜索许多网页,你的所有人似乎都使用 DTE.ActiveDocument ,这会导致我的代码出错。我编写了两个版本的方法,假设在编辑器中返回一个选定的文本,但我仍然会一遍又一遍地得到相同的错误: 错误是:非静态字段,方法或属性'EnvDTE._DTE.ActiveDocument.get'需要对象引用 这是我的两个版本的方法(只显示相关的代码):

using EnvDTE;

    private string getSelectedText_V1()
    {
        string selectedText = string.Empty;

        /*PROBLEM HERE: An object reference is required for the non-static field, method, or property 'EnvDTE._DTE.ActiveDocument.get'*/
        Document doc = DTE.ActiveDocument;

        return selectedText;
    }

    private string getSelectedText_V2()
    {
        string selectedText = string.Empty;

        /*PROBLEM HERE: An object reference is required for the non-static field, method, or property 'EnvDTE._DTE.ActiveDocument.get'*/
        EnvDTE.TextSelection TxtSelection = DTE.ActiveDocument.Selection;


        return selectedText;
    }

请帮我弄清楚我的代码中出错了什么?

1 个答案:

答案 0 :(得分:2)

如果您可以在插件中访问GetService()方法,则可以添加:

DTE dte = this.GetService(typeof(DTE))为DTE;

然后你的代码将成为:

private string getSelectedText_V1()
{
    string selectedText = string.Empty;
    DTE dte = this.GetService(typeof(DTE) as DTE;

    Document doc = dte.ActiveDocument;

    return doc.Selection.Text;
}