Freigeben über


Beispiel für die Verwendung von EditPoint

Add-Ins für Visual Studio sind in Visual Studio 2013 veraltet. Sie müssen für Ihre Add-Ins ein Upgrade auf VSPackage-Erweiterungen durchführen. Weitere Informationen über das Durchführen eines Upgrades finden Sie unter FAQ: Konvertieren von Add-Ins in VSPackage-Erweiterungen.

Im folgenden Beispiel wird ein TextDocument-Objekt erstellt und diesem Text hinzugefügt. Dann wird ein Teil der Funktionalität des EditPoint-Objekts demonstriert.

Beispiel

Beschreibung

Diese Funktionen sind bei Zeichenoffsets einsbasiert, während IVsTextView und ähnliche Schnittstellen nullbasiert sind. EditPoint ist einsbasiert, da es für die Unterstützung der VB-Automatisierung ausgelegt ist.

Erstellen Sie zum Ausführen dieses Beispiels ein Visual Studio-Add-In-Projekt, und geben Sie im Assistenten an, dass ein Menüelement Extras erstellt werden soll. Wenn Sie das Add-In erstellen und ausführen, klicken Sie auf den entsprechenden Befehl im Menü Extras, um den Code auszuführen.

Code

[Visual Basic]

Public Sub Exec(ByVal commandName As String, ByVal executeOption As vsCommandExecOption, ByRef varIn As Object, ByRef varOut As Object, ByRef handled As Boolean) Implements IDTCommandTarget.Exec
    handled = False
    If executeOption = vsCommandExecOption.vsCommandExecOptionDoDefault Then
        If commandName = "EditPoint.Connect.EditPoint" Then
            EditPointExample1(CType(_applicationObject, DTE))
            handled = True
            Exit Sub
        End If
    End If
End Sub
Sub EditPointExample1(ByVal dte As DTE)
    Dim objTextDoc As TextDocument
    Dim objEditPt As EditPoint, iCtr As Integer

    ' Create a new text file.
    applicationObject.ItemOperations.NewFile("General\Text File")

    ' Get a handle to the new document and create an EditPoint.
    objTextDoc = applicationObject.ActiveDocument.Object("TextDocument")
    objEditPt = objTextDoc.StartPoint.CreateEditPoint

    ' Insert ten lines of text.
    For iCtr = 1 To 10
        objEditPt.Insert("This is a test." & Chr(13))
    Next iCtr

    ' Replace the eighth word on the third line with a new word.
    objEditPt.StartOfDocument()
    objEditPt.LineDown(3)
    objEditPt.WordRight(3)
    objEditPt.Delete(4)
    objEditPt.Insert("raid")

    ' Indent a line.
    objEditPt.LineDown(2)
    objEditPt.StartOfLine()
    objEditPt.Indent()

    ' Set some bookmarks.
    objEditPt.LineDown(1)
    ' Set the first bookmark.
    objEditPt.SetBookmark()
    ' Set the second bookmark on the next line.
    objEditPt.LineDown(1)
    objEditPt.SetBookmark()
    ' Go back to the first bookmark.
    objEditPt.PreviousBookmark()
    ' Add some text there.
    objEditPt.Insert("BOOKMARK 1: ")
    ' Do the same thing at the next bookmark.
    objEditPt.NextBookmark()
    objEditPt.Insert("BOOKMARK 2: ")

    ' Print the current line and character offset in the buffer. 
    MsgBox("Line and offset: " & objEditPt.Line, _
    objEditPt.LineCharOffset())

    ' Capitalize the third word of the second line.
    objEditPt.StartOfDocument()
    objEditPt.LineDown(2)
    objEditPt.WordRight(3)
    objEditPt.ChangeCase(4, vsCaseOptions.vsCaseOptionsCapitalize)

    ' Remove the spaces between the words.
    objEditPt.DeleteWhitespace(vsWhitespaceOptions. _
    vsWhitespaceOptionsHorizontal)
End Sub
Using System.Windows.Forms;

public void EditPointExample1( DTE dte ) 
{ 
    TextDocument objTextDoc = null; 
    EditPoint objEditPt = null; int iCtr = 0; 

    // Create a new text file.
    applicationObject.ItemOperations.NewFile( @"General\Text File",
 "", "{00000000-0000-0000-0000-000000000000}" ); 

    // Get a handle to the new document and create an EditPoint.
    objTextDoc = ( ( EnvDTE.TextDocument )(
 applicationObject.ActiveDocument.Object( "TextDocument" ) ) ); 
    objEditPt = objTextDoc.StartPoint.CreateEditPoint(); 

    // Insert ten lines of text.
    for ( iCtr=1; iCtr<=10; iCtr++ ) 
    { 
        objEditPt.Insert( "This is a test." + "\n"); 
    } 

    // Replace the eighth word on the third line with a new word.
    objEditPt.StartOfDocument(); 
    objEditPt.LineDown( 3 ); 
    objEditPt.WordRight( 3 ); 
    objEditPt.Delete( 4 ); 
    objEditPt.Insert( "raid" ); 
    
    // Indent a line.
    objEditPt.LineDown( 2 ); 
    objEditPt.StartOfLine(); 
    objEditPt.Indent( null, 1 ); 

    // Set some bookmarks.
    objEditPt.LineDown( 1 ); 
    // Set the first bookmark.
    objEditPt.SetBookmark(); 
    // Set the second bookmark on the next line.
    objEditPt.LineDown( 1 ); 
    objEditPt.SetBookmark(); 
    // Go back to the first bookmark.
    objEditPt.PreviousBookmark(); 
    // Add some text there.
    objEditPt.Insert( "BOOKMARK 1: " ); 
    // Do the same thing at the next bookmark.
    objEditPt.NextBookmark(); 
    objEditPt.Insert( "BOOKMARK 2: " ); 
    // Print the current line and character offset in the buffer. 
    MessageBox.Show( "Line and offset: " + objEditPt.Line); 

    // Capitalize the third word of the second line.
   objEditPt.StartOfDocument(); 
    objEditPt.LineDown( 2 ); 
    objEditPt.WordRight( 3 ); 
    objEditPt.ChangeCase( 4, vsCaseOptions.vsCaseOptionsCapitalize ); 

    // Remove the spaces between the words.
    objEditPt.DeleteWhitespace( vsWhitespaceOptions.vsWhitespaceOptionsHorizontal ); 
}

Siehe auch

Referenz

EditPoint

EditPoint2

TextPoint

TextDocument