2011-01-23 4 views
1

Coders, je développe un add-in pour VS2010 et j'essaie d'obtenir le texte sélectionné dans l'éditeur de code. jusqu'à présent, j'ai été la recherche de nombreuses pages Web et tout votre semble utiliser DTE.ActiveDocument qui provoque une erreur dans mon code. J'ai écrit deux versions d'une méthode supposée renvoyer un texte sélectionné dans l'éditeur mais j'ai toujours la même erreur encore et encore: l'erreur est: Une référence d'objet est requise pour le champ non statique, méthode, ou propriété et voici mes deux versions « EnvDTE._DTE.ActiveDocument.get » de la méthode (uniquement le code correspondant est showen):VS 2010 addin: obtenir le texte sélectionné dans l'éditeur

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; 
    } 

S'il vous plaît me aider à comprendre ce que je fait de mal dans mon code?

Répondre

2

Si vous avez accès à la méthode GetService() dans votre Addin, vous pouvez ajouter:

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

Ensuite, votre code serait:

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

    Document doc = dte.ActiveDocument; 

    return doc.Selection.Text; 
} 
+0

voir aussi http://channel9.msdn.com/blogs/vsipmarketing/vsx101-an-introduction-to-visual-studio-2010-extensibility – ealshabaan

+0

qui fonctionne très bien, merci! PS: Notez qu'il y a une petite erreur de syntaxe: il y a des parenthèses manquantes avant le 'as'. C'est trop petit, donc SO ne me laissera pas le modifier. –

Questions connexes