Porady: kontrolowanie edytora kodu (Visual Basic)
Dodatki Visual Studio zostały zaniechane w programie Visual Studio 2013.Dodatki należy uaktualniać do pakietu rozszerzenia VSPackage.Aby uzyskać więcej informacji na temat uaktualniania, zobacz Często zadawane pytania: konwertowanie dodatków na rozszerzenia pakietu VSPackage.
Visual Studio Edytor kodu jest edytorem tekstu, która może pomieścić usługi językowych, takie jak Visual Basic, Visual C++, i Visual C#.Tekst jest zapisany do buforu, który wyświetla się w dokumencie tekstu.Za pomocą obiektów modelu Edytora automatyzacji Visual Studio można manipulować tekstem w tle w buforze tekstu lub w widoku.
Są cztery główne obiekty używane do kontrolowania tekstu w edytorze kodu:
Nazwa obiektu |
Opis |
---|---|
Używane do manipulowania tekstem w widoku.TextSelection obiekt reprezentuje punkt wstawiania (lub daszek) lub zaznaczony tekst w widocznym dokumencie. |
|
Stała pozycja w buforze tekstu. |
|
Podobny do TextPoint obiektu, ale może być przesuwany i może zmodyfikować tekst w buforze. |
|
Podobny do TextPoint obiektu, chyba, że zawiera on dodatkowe funkcje, aby zlokalizować położenie tekstu w wirtualnej przestrzeni. |
Dwa główne obiekty są używane do manipulowania Edytora kodu TextSelection i EditPoint2 obiektów.Główne różnice między nimi są następujące:
TextSelection reprezentuje zaznaczenie tekstu widocznego.Zmiana położenia zmienia zaznaczenie w widoku.EditPoint2 nie jest związany z żadnym składnikiem interfejsu użytkownika, więc zmiana jego położenia nic nie zmienia w widoku.
Ponieważ TextSelection reprezentuje wyboru widoczny, istnieje tylko jeden obiekt TextSelection w dokumencie.Kiedy masz wiele TextSelection obiektów w dokumencie, wszystkie one odnoszą się do tego samego widocznego wyboru i wszystkie one mają taką samą pozycję.Masz tyle EditPoint2 obiektów ile chcesz, a wszystkie mogą mieć różne stanowiska.
Metody TextSelection obiektu mają mieć relację jeden do jednego z użytkownikami działania podczas gdy metody EditPoint2 nie muszą.W rezultacie niektóre metody EditPoint2 wykonują czynności, których pojedyncza metoda TextSelection nie może wykonać, podczas gdy inne metody EditPoint2 są bardziej szczegółowe w działaniu niż metody TextSelection.Jest to również powód, który TextSelection jest bogatszy we właściwości i metody niż EditPoint2.
Za pomocą tych obiektów można:
Wybierz, dodaj, usuń i przenieś tekst w buforze lub w widoku.
Przesuń punkt wstawiania wokół buforu lub widoku.
Wcięcie tekstu w buforze lub widoku.
Wstaw, usuń i przejdź do zakładek.
Dodaj lub usuń tekst, łącznie z „białą przestrzenią”.
Znajdź lub zamień tekst oparty na określonym wzorze.
Utwórz sekcję obramowania w kodzie i tekście.
Badanie informacji dotyczących tekstu, na przykład położenie tekstu, górnej i dolnej części dokumentu, zakresy zaznaczonego tekstu i tak dalej.
Poniższy przykład pokazuje, jak odwołać się i używać różnych członków modelu automatyzacji edytora.Aby uzyskać więcej informacji na temat sposobu uruchamiania kodu przykładu, zobacz Porady: kompilowanie i uruchamianie kodu modelu obiektów automatyzacji — przykłady.
Aby uzyskać dodatkowe przykłady ilustrujące użycie modelu Edytora automatyzacji, zobacz przykłady w witrynie sieci Web — Przykłady automatyzacji dla programu Visual Studio (https://msdn2.microsoft.com/vstudio/aa718336.aspx).
[!UWAGA]
Polecenia menu i okien dialogowych mogą różnić się od tych opisanych w Pomocy, w zależności od ustawień aktywnych lub wydania.Procedury te zostały opracowane z ogólnych ustawień projektowych active.Aby zmienić swoje ustawienia, wybierz Importuj i eksportujustawienia w menu Narzędzia.Aby uzyskać więcej informacji, zobacz Dostosowywanie ustawień środowiska deweloperskiego w Visual Studio.
HTMLWindow3, vsHTMLPanes i vsHTMLViews zostały dodane z wprowadzeniem widoku złożonego w Visual Studio 2008 edytorze HTML.Okno podziału oddziela zakładkę i elementy widoku okna Edycja HTML.Przełączanie widoku (do projektowania lub źródła) niekoniecznie oznacza przełączenie na karcie (projekt Split/źródło).Na przykład, po kliknięciu karty Podziel, przełączanie widoków Projektu i Źródła nie zmienia karty; włącza tylko lub wyłącza części Projektu i Źródła w widoku Podziel.
Przykład
Przykład ActivePoint.Ten przykład ilustruje także użycie StartOfLine, DisplayColumn, EndOfLine i .Przed uruchomieniem tego przykładu, należy otworzyć plik kodu lub dokument tekstowy w Visual Studio, dodać do niego fragment tekstu i zaznaczyć fragment tekstu.
' 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
Przykład AnchorPoint.Ten przykład ilustruje także użycie DisplayColumn, Line, StartOfDocument i EndOfDocument.Przed uruchomieniem tego przykładu, należy otworzyć plik kodu lub dokument tekstowy w Visual Studio, dodać do niego fragment tekstu i zaznaczyć fragment tekstu.
' 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
Przykład Insert.Ten przykład ilustruje także użycie IsEmpty, WordLeft, WordRight, Text, Delete i MoveToPoint.Przed uruchomieniem tego przykładu, należy otworzyć plik kodu lub dokument tekstowy w Visual Studio i dodać do niego fragment tekstu.
' 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
Przykład FindPattern.Ten przykład ilustruje także użycie SelectLine.Przed uruchomieniem tego przykładu, należy otworzyć dokument tekstowy lub plik kodu w Visual Studio i dodać do niego fragment tekstu.
' 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
Przykład OutlineSection.Ten przykład ilustruje także użycie StartOfDocument, Line, LineCharOffset, FindPattern, SwapAnchor, MoveToLineAndOffset i LineDown.Przed uruchomieniem tego przykładu, należy otworzyć dokument kodu w Visual Studio zawierającym blok #if _DEBUG…#endif.
' 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
Przykład otwiera dokument tekstowy i generuje listę wszystkich dostępnych poleceń do tego dokumentu.
' 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
Przykład obiektu HTMLWindow.Ten przykład ilustruje także użycie ActiveDocument, ActiveWindow, Window, CurrentTab, CurrentTabObject, ActivePane, StartPoint, CreateEditPoint, FindPattern i InsertFromFile.Przed uruchomieniem tego przykładu, należy otworzyć dokument HTML w Visual Studio.
' 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
Zobacz też
Zadania
Porady: zmienianie charakterystyki okna
Koncepcje
Wykres modelu obiektów automatyzacji
Inne zasoby
Tworzenie i kontrolowanie okien środowiska