2016-04-03 21 views
0

Ich habe eine Visual Studio 2013-Plugin, das diese Codezeile beispielsweise verwendet:NULL bei Verwendung von TextSelection erhalten sel = (TextSelection) dte.ActiveDocument.Selection;

public void CodeElementFromPointExample(DTE2 dte) 
{ 
    try 
    { 
     TextSelection sel = 
      (TextSelection) dte.ActiveDocument.Selection; 

     TextPoint pnt = (TextPoint)sel.ActivePoint; 
     ... 
    } 
    ... 
} 

Ich bin eine Null-Ausnahme in der Linie erhalten:

TextSelection sel = (TextSelection) dte.ActiveDocument.Selection; 

Im Allgemeinen würde Ich mag an entdecke einen "cs" Dateicode und finde einen Methodennamen, wo ich zum Beispiel auf die Datei und ihre Attribute klicke.

+0

Auswahl ist, wie der Name vermuten lässt, der aktuell ausgewählte Text im Dokument. Ein Klick irgendwo wählt nichts aus. – derpirscher

+0

Ich klicke nicht irgendwo auf das Dokument, wähle einen Text aus und klicke dann auf Kopieren, dann ruft das Ereignis Kopieren auf und innerhalb dieser Methode versuche ich den Rest zu tun, entdecke die Methode usw. – Oren

+0

Hast du ein Beispiel wie mach es richtig ?, ich finde kein richtiges funktionierendes Beispiel im Web. nur Code-Schnipsel. – Oren

Antwort

0

In Ihrem Code kann entweder dte oder dte.ActiveDocument null sein. Verwenden Sie eine Codelogik, um den Fall zu ermitteln.

Sobald Sie erhalten, dass dte.ActiveDocument nicht NULL ist, erhalten Sie seine .Object-Eigenschaft und versuchen, es zu EnvDTE.TextDocument zu werfen, um zu sehen, ob das aktive Dokument ein Textdokument ist.

Dann gibt TextDocument.Selection ein TextSelection-Objekt zurück.