VS 2010 addin: получение выделенного текста в редакторе - PullRequest
1 голос
/ 23 января 2011

Кодеры, я разрабатываю надстройку для 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 Ответ

2 голосов
/ 25 января 2011

Если у вас есть доступ к методу 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;
}
...