Como: Controlar o Editor de código (Visual Basic)

The Visual Studio Editor de código é um editor de texto que acomoda sistema autônomo serviços de linguagem sistema autônomo Visual Basic, Visual C++, e Visual C#. Texto é gravado em um buffer que exibe um documento de texto.Usando o Visual Studio Editor de objetos de modelo de automação; você pode manipular texto em segundo plano no buffer de texto ou no modo de exibição.

Os quatro objetos principais usados para controlar o texto no editor de código são:

Nome do objeto

Descrição

TextSelection

Usado para manipular texto no modo de exibição.The TextSelection objeto representa o ponto de inserção (ou o cursor) ou selecionado texto no documento visível.

TextPoint

Uma posição fixa no buffer de texto.

EditPoint2

Semelhante a TextPoint objeto, mas podem ser movidos e pode modificar o texto no buffer.

VirtualPoint

Semelhante a TextPoint objeto, exceto que ele contém funcionalidade adicional para localizar texto posições no espaço virtual.

Os dois objetos principais que usar para manipular o editor de código são o TextSelection e EditPoint2 objetos. As principais diferenças entre eles estão:

  • TextSelection representa a seleção de texto visível. Alterar sua posição altera a seleção no modo de exibição.An EditPoint2 não está vinculada a qualquer componente de interface do usuário, para que alterar sua posição muda nada no modo de exibição.

  • Porque TextSelection representa a seleção visível, existe apenas um TextSelection objeto por documento. Enquanto você tem o vários TextSelection objetos em um documento, todos eles consultem mesma seleção visível e todos eles têm a mesma posição. Você pode ter tantas EditPoint2 objetos sistema autônomo você quer, e eles podem ter diferentes posições.

  • Os métodos do TextSelection objeto foram projetadas para ter uma correspondência um-para-um às ações do usuário e, ao mesmo tempo, os métodos de EditPoint2 não são. sistema autônomo resultado, alguns EditPoint2 métodos fazem coisas sem único TextSelection método possa fazer, enquanto outros EditPoint2 sistema autônomo métodos são mais granulares na função que TextSelection métodos. Isso é também o motivo que TextSelection é mais avançada em Propriedades e métodos de EditPoint2.

Usando esses objetos, você pode:

  • Selecionar, adicionar, excluir e mover o texto no buffer ou no modo de exibição.

  • Mova o ponto de inserção em torno de buffer ou modo de exibição.

  • Recue o texto em buffer ou o modo de exibição.

  • Inserir, remover e navegar para indicadores.

  • Adicionar ou remover o texto, incluindo o espaço em branco.

  • Localizar ou substituir texto com base em um padrão especificado.

  • Crie uma seção de estrutura de tópicos no código e texto.

  • Consultar informações sobre o texto, sistema autônomo posição do texto, parte superior e inferior do documento, intervalos de texto selecionado e assim por diante.

Os exemplos de macro a seguir demonstram como referenciar e usar os vários membros do modelo de automação do Editor.Para obter mais informações sobre como executar o código de exemplo, consulte Como: Compilar e executar os exemplos de códigos automação objeto modelo.

Para outros exemplos que demonstram o uso do modelo de automação do Editor, consulte a macro de verificação ortográfica e outros exemplos em amostras de automação para Visual Studio (https://msdn2.Microsoft.com/en-us/vstudio/aa718336.aspx) Site da Web.

Observação:

As caixas de diálogo e comandos de menu que você vê podem diferir das descritas no Help dependendo de suas configurações ativas ou edição. Esses procedimentos foram desenvolvidos com o Geral Development Settings ativo.Para alterar as configurações, escolher Import and ExportSettings on the Tools menu.Para obter mais informações, consulte Configurações do Visual Studio.

HTMLWindow3, vsHTMLPanes e vsHTMLViews foram adicionadas com a introdução do modo divisão na Visual Studio 2008 Editor de HTML. modo divisão separa a guia e o modo de exibição de janela de edição de elementos do HTML.Alternar o modo de exibição (para o design ou código-fonte) não significa necessariamente alternando a guia (divisão/design/origem).Por exemplo, quando você clica na guia dividir, alternar entre modos de exibição entre o design e código-fonte não altera a guia, ele só ativa ou desativa as partes de design e código-fonte no modo divisão.

Exemplo

Exemplo de macro para ActivePoint. Este exemplo também ilustra o uso de StartOfLine, DisplayColumn, e EndOfLine. Antes de executar esse exemplo em aberto um arquivo de código ou um documento de texto em Visual Studio, adicione algum texto nele e selecionar a parte do texto.

' Macro example for TextSelection.ActivePoint.
'
Sub ActivePointExample()
    ' Before running this example, open a text document.
    Dim objSel As TextSelection = DTE.ActiveDocument.Selection
    Dim objActive As VirtualPoint = objSel.ActivePoint
     ' Collapse the selection to the beginning of the line.
    objSel.StartOfLine()
     ' objActive is "live", tied to the position of the actual 
     ' selection, so it will reflect the new position.
    Dim iCol As Long = objActive.DisplayColumn
     ' Move the selection to the end of the line.
        objSel.EndOfLine()

    MsgBox("The length of the insertion point line is " & _
    (objActive.DisplayColumn - iCol) & " display characters.")
End Sub

Exemplo de macro para AnchorPoint. Este exemplo também ilustra o uso de DisplayColumn, Line, StartOfDocument e EndOfDocument. Antes de executar esse exemplo em aberto um arquivo de código ou um documento de texto em Visual Studio, adicione algum texto nele e selecionar a parte do texto.

' Macro example for TextSelection.AnchorPoint.
'
Sub AnchorPointExample()
    ' Before running this example, open a text document.
    Dim objSel As TextSelection = DTE.ActiveDocument.Selection
    Dim objAnchor As VirtualPoint = objSel.AnchorPoint
    ' objAnchor is "live", tied to the position of the actual 
    ' selection, so it will reflect changes. iCol and iRow are created 
    ' here to save a "snapshot" of the anchor point's position at this 
    ' time.
    Dim iCol As Long = objAnchor.DisplayColumn
    Dim iRow As Long = objAnchor.Line
    ' As the selection is extended, the active point moves but the 
    ' anchor point remains in place.
    objSel.StartOfDocument(True)
    objSel.EndOfDocument(True)

    If (iCol = objAnchor.DisplayColumn And iRow = objAnchor.Line) Then
        MsgBox("The anchor point has remained in place at row " & _
        iRow & ", display column " & iCol)
    End If
End Sub

Exemplo de macro para Insert. Este exemplo também ilustra o uso de IsEmpty, WordLeft, WordRight, Text, Delete, e MoveToPoint. Antes de executar esse exemplo, você em aberto um arquivo de código ou um documento de texto em Visual Studio e adicione algum texto.

' Macro example for TextSelection.Insert.
'
Sub InsertExample()
    ' Before running this example, open a text document.
    Dim objSel As TextSelection = DTE.ActiveDocument.Selection
    If objSel.IsEmpty Then
        ' If there is no text selected, swap the words before and after 
        ' the insertion point. We begin by selecting the word before 
        ' the insertion point.
        objSel.WordLeft(True)
        If Not objSel.IsEmpty Then
            ' We can continue only if the selection was not already at 
            ' the beginning of the document.
            Dim strBefore As String = objSel.Text

            ' The text is saved in strBefore; now delete it and move 
            ' past the following word.
            objSel.Delete()
            objSel.WordRight(True)
            If objSel.Text.StartsWith(" ") Or _
            objSel.Text.StartsWith(Microsoft.VisualBasic. _
            ControlChars.Tab) Then
                ' The previous call to WordRight may have skipped some 
                ' white space instead of an actual word. In that case, 
                 ' we should call it again.
                objSel.WordRight(True)
            End If

            ' Insert the new text at the end of the selection.
            objSel.Insert(strBefore, _
            vsInsertFlags.vsInsertFlagsInsertAtEnd)
        End If
    Else
        ' If some text is selected, replace the following word with the 
        ' selected text.
        Dim strSelected As String = objSel.Text

        objSel.MoveToPoint(objSel.BottomPoint)
        objSel.WordRight(True)
        If objSel.Text.StartsWith(" ") Or _
        objSel.Text.StartsWith(Microsoft.VisualBasic. _
        ControlChars.Tab) Then
            ' The previous call to WordRight may have skipped some 
            ' white space instead of an actual word. In that case, we 
            ' should call it again.
            objSel.WordRight(True)
        End If

        ' Insert the text, overwriting the existing text and leaving 
        ' the selection containing the inserted text.
        objSel.Insert(strSelected, _
        vsInsertFlags.vsInsertFlagsContainNewText)
    End If
End Sub

Exemplo de macro para FindPattern. Este exemplo também ilustra o uso de SelectLine. Antes de executar esse exemplo, você precisa em em aberto um documento de texto ou um arquivo de código em Visual Studio e adicione algum texto.

' Macro example for TextSelection.FindPattern.
'
Sub FindPatternExample()
    ' Before running this example, open a text document.
    Dim objSel As TextSelection = DTE.ActiveDocument.Selection

    ' Advance to the next Visual Basic function beginning or end by 
    ' searching for  "Sub" with white space before and after it.
    If objSel.FindPattern(":WhSub:Wh", _
    vsFindOptions.vsFindOptionsRegularExpression) Then
        ' Select the entire line.
        objSel.SelectLine()
    End If
End Sub

Exemplo de macro para OutlineSection. Este exemplo também ilustra o uso de StartOfDocument, Line, LineCharOffset, FindPattern, SwapAnchor, MoveToLineAndOffset e LineDown. Antes de executar esse exemplo, em em aberto um documento de código em Visual Studio contendo um #if _DEBUG…#endif bloco.

' Macro example for TextSelection.OutlineSection.
'
Sub OutlineSectionExample()
    ' Before running this example, open a code document
    ' containing a #if _DEBUG…#endif block.
    Dim objSel As TextSelection = DTE.ActiveDocument.Selection

    ' Move to the beginning of the document so we can iterate over the 
    ' whole thing.
    objSel.StartOfDocument()
    While objSel.FindPattern("#if _DEBUG")
        ' If we found the beginning of a debug-only section, save the 
        ' position.
        Dim lStartLine As Long = objSel.TopPoint.Line
        Dim lStartColumn As Long = objSel.TopPoint.LineCharOffset

        ' Look for the end.
        If objSel.FindPattern("#endif") Then
            ' Select the entire section and outline it.
            objSel.SwapAnchor()
            objSel.MoveToLineAndOffset(lStartLine, lStartColumn, True)
            objSel.OutlineSection()
            objSel.LineDown()
        End If
    End While
End Sub

Exemplo de macro abre um documento de texto e gera uma lista de todos os comandos disponível no documento.

' Macro example
  ' This generates a text document listing all available command names.
Sub CommandNamesCollapseExample()
  Dim Cmd As Command
  Dim Commands As Commands = DTE.Commands 
  Dim PrjItem As ProjectItem
  Dim Doc As Document
  Dim TxtDoc As TextDocument
  DTE.ItemOperations.NewFile ("General\Text File")
  Set Doc = ActiveDocument
  Set TxtDoc = Doc.Object("TextDocument")
  For Each Cmd In Commands
  If (Cmd.Name <> "") Then
    TxtDoc.Selection.Text = Cmd.Name & vbLF
    TxtDoc.Selection.Collapse
  End If
  Next
End Sub

Exemplo de macro para HTMLWindow objeto. Este exemplo também ilustra o uso de ActiveDocument, ActiveWindow, Window, CurrentTab, CurrentTabObject, ActivePane, StartPoint, CreateEditPoint, FindPattern e InsertFromFile. Antes de executar esse exemplo, abra um documento HTML no Visual Studio.

' Macro example for HTMLWindow object

Sub HTMLWindowExample()
   ' Open an HTML document before running this sample.
   If TypeOf ActiveDocument.ActiveWindow.Object Is HTMLWindow Then
      ' Ask the user for a file to insert into the body of the HTML 
      ' document. This file should be an HTML fragment.
      Dim strFile As String = InputBox("Enter the name of a file to _
      insert at the end of the HTML document:")
      ' Get the HTMLWindow object and determin which tab is currently 
      ' active.
      Dim objHTMLWin As HTMLWindow = ActiveDocument.ActiveWindow.Object
      Dim Tab As vsHTMLTabs = objHTMLWin.CurrentTab

      ' Switch to the "source" tab.
      objHTMLWin.CurrentTab = vsHTMLTabs.vsHTMLTabsSource

      ' Get an EditPoint at the start of the text.
      Dim objTextWin As TextWindow = objHTMLWin.CurrentTabObject
      Dim objEP As EditPoint = _
      objTextWin.ActivePane.StartPoint.CreateEditPoint

      ' Look for the end of the document body.
      If objEP.FindPattern("</body>") Then
         ' Insert the contents of the file.
         objEP.InsertFromFile(strFile)
      End If

      ' Switch back to the original view of the HTML file.
       objHTMLWin.CurrentTab = Tab
   Else
      MsgBox("You must open an HTML document.")
   End If
End Sub

Consulte também

Tarefas

Como: Alterar características de janela

Como: Criar um suplemento

Demonstra Passo a passo: Criando um assistente

Conceitos

Gráfico do modelo de objetos de automação

Outros recursos

Criando e controlando o ambiente Windows

Criando suplementos e assistentes

Automação e referência a extensibilidade