Partager via


Procédure pas - à - pas : personnaliser l'affichage de texte

Vous pouvez personnaliser un affichage de texte en modifiant les propriétés suivantes l'appropriées dans sa carte d'éditeur-format :

  • Marge des indicateurs

  • Signe insertion d'insertion

  • Signe insertion de remplacer

  • Texte sélectionné

  • Texte sélectionné inactif (autrement dit, texte sélectionné qui a perdu le focus)

  • l'espace blanc visible

Composants requis

Pour exécuter cette procédure, vous devez installer Kit de développement logiciel Visual Studio 2010. Pour plus d'informations sur le kit de développement Visual Studio et à télécharger, consultez Centre pour développeurs d'extensibilité Visual Studio sur le site Web MSDN.

Créer un projet managé (MEF) managed extensibility framework

Pour créer un projet MEF

  1. Créez un projet de classifieur d'éditeur c# ou du classifieur Visual Basic Editor. Nommez la solution ViewPropertyTest.

  2. Ouvrez le fichier source.extension.vsixmanifest dans l'éditeur de manifeste VSIX.

  3. Assurez -vous que le titre d' Content contient un type de contenu composant MEF et que le chemin d'accès est défini à ViewPropertyTest.dll.

  4. Enregistrez et fermez le fichier source.extension.vsixmanifest.

  5. Supprimez les fichiers de classe existants.

Définir le type de contenu

Pour définir un type de contenu

  1. Ajoutez un fichier de classe et nommez-le ViewPropertyModifier.

  2. Ajoutez les directives suivantes d' using (instructions d'Imports en Visual Basic).

    Imports System
    Imports System.Collections
    Imports System.Windows
    Imports System.Windows.Media
    Imports System.ComponentModel.Composition
    Imports Microsoft.VisualStudio.Text.Classification
    Imports Microsoft.VisualStudio.Text.Editor
    Imports Microsoft.VisualStudio.Utilities
    
    using System;
    using System.Collections;
    using System.Windows;
    using System.Windows.Media;
    using System.ComponentModel.Composition;
    using Microsoft.VisualStudio.Text.Classification;
    using Microsoft.VisualStudio.Text.Editor;
    using Microsoft.VisualStudio.Utilities;
    
  3. Déclarez une classe nommée TestViewCreationListener qui hérite d' IWpfTextViewCreationListener. Exportez cette classe avec les attributs suivants :

    <Export(GetType(IWpfTextViewCreationListener)), ContentType("text"), TextViewRole(PredefinedTextViewRoles.Document)>
    Friend Class TestViewCreationListener
        Implements IWpfTextViewCreationListener
    
    [Export(typeof(IWpfTextViewCreationListener))]
    [ContentType("text")]
    [TextViewRole(PredefinedTextViewRoles.Document)]
    internal class TestViewCreationListener : IWpfTextViewCreationListener
    
  4. Dans cette classe, importez IEditorFormatMapService.

    <Import()>
    Friend FormatMapService As IEditorFormatMapService = Nothing
    
    [Import]
    internal IEditorFormatMapService FormatMapService = null;
    

Modifier les propriétés d'affichage

Pour modifier les propriétés d'affichage

  • Implémentez la méthode d' TextViewCreated afin que les propriétés d'affichage sont modifiées lorsque la vue. Pour apporter la modification, recherchez d'abord ResourceDictionary qui correspondent à l'aspect de la vue que vous souhaitez rechercher. Modifiez la propriété appropriée dans le dictionnaire de ressources et définissez les propriétés. Traitement par lot les appels à la méthode d' SetProperties en appelant la méthode d' BeginBatchUpdate avant de définir les propriétés et de l' EndBatchUpdate après avoir défini les propriétés.

    Public Sub TextViewCreated(ByVal textView As IWpfTextView) Implements IWpfTextViewCreationListener.TextViewCreated
    
        Dim formatMap As IEditorFormatMap = FormatMapService.GetEditorFormatMap(textView)
    
        Dim regularCaretProperties As ResourceDictionary = formatMap.GetProperties("Caret")
        Dim overwriteCaretProperties As ResourceDictionary = formatMap.GetProperties("Overwrite Caret")
        Dim indicatorMargin As ResourceDictionary = formatMap.GetProperties("Indicator Margin")
        Dim visibleWhitespace As ResourceDictionary = formatMap.GetProperties("Visible Whitespace")
        Dim selectedText As ResourceDictionary = formatMap.GetProperties("Selected Text")
        Dim inactiveSelectedText As ResourceDictionary = formatMap.GetProperties("Inactive Selected Text")
    
        formatMap.BeginBatchUpdate()
    
        regularCaretProperties(EditorFormatDefinition.ForegroundBrushId) = Brushes.Magenta
        formatMap.SetProperties("Caret", regularCaretProperties)
    
        overwriteCaretProperties(EditorFormatDefinition.ForegroundBrushId) = Brushes.Turquoise
        formatMap.SetProperties("Overwrite Caret", overwriteCaretProperties)
    
        indicatorMargin(EditorFormatDefinition.BackgroundColorId) = Colors.LightGreen
        formatMap.SetProperties("Indicator Margin", indicatorMargin)
    
        visibleWhitespace(EditorFormatDefinition.ForegroundColorId) = Colors.Red
        formatMap.SetProperties("Visible Whitespace", visibleWhitespace)
    
        selectedText(EditorFormatDefinition.BackgroundBrushId) = Brushes.LightPink
        formatMap.SetProperties("Selected Text", selectedText)
    
        inactiveSelectedText(EditorFormatDefinition.BackgroundBrushId) = Brushes.DeepPink
        formatMap.SetProperties("Inactive Selected Text", inactiveSelectedText)
    
        formatMap.EndBatchUpdate()
    End Sub
    
    public void TextViewCreated(IWpfTextView textView)
    {
        IEditorFormatMap formatMap = FormatMapService.GetEditorFormatMap(textView);
    
        ResourceDictionary regularCaretProperties = formatMap.GetProperties("Caret");
        ResourceDictionary overwriteCaretProperties = formatMap.GetProperties("Overwrite Caret");
        ResourceDictionary indicatorMargin = formatMap.GetProperties("Indicator Margin");
        ResourceDictionary visibleWhitespace = formatMap.GetProperties("Visible Whitespace");
        ResourceDictionary selectedText = formatMap.GetProperties("Selected Text");
        ResourceDictionary inactiveSelectedText = formatMap.GetProperties("Inactive Selected Text");
    
        formatMap.BeginBatchUpdate();
    
        regularCaretProperties[EditorFormatDefinition.ForegroundBrushId] = Brushes.Magenta;
        formatMap.SetProperties("Caret", regularCaretProperties);
    
        overwriteCaretProperties[EditorFormatDefinition.ForegroundBrushId] = Brushes.Turquoise;
        formatMap.SetProperties("Overwrite Caret", overwriteCaretProperties);
    
        indicatorMargin[EditorFormatDefinition.BackgroundColorId] = Colors.LightGreen;
        formatMap.SetProperties("Indicator Margin", indicatorMargin);
    
        visibleWhitespace[EditorFormatDefinition.ForegroundColorId] = Colors.Red;
        formatMap.SetProperties("Visible Whitespace", visibleWhitespace);
    
        selectedText[EditorFormatDefinition.BackgroundBrushId] = Brushes.LightPink;
        formatMap.SetProperties("Selected Text", selectedText);
    
        inactiveSelectedText[EditorFormatDefinition.BackgroundBrushId] = Brushes.DeepPink;
        formatMap.SetProperties("Inactive Selected Text", inactiveSelectedText);
    
        formatMap.EndBatchUpdate();
    }
    

Génération et test de code

Pour générer et tester le code

  1. Générez la solution.

    Lorsque vous exécutez ce projet dans le débogueur, une deuxième instance de Visual Studio est instanciée.

  2. Créez un fichier texte et tapez du texte.

    • Le signe insertion d'insertion doit être magenta et le signe insertion de remplacer doit être turquoise.

    • La marge des indicateurs (située à gauche de l'affichage de texte) doit être verte claire.

  3. Sélectionnez le texte que vous venez de taper. La couleur du texte sélectionné doit être rose-clair.

  4. Pendant que le texte est sélectionné, cliquez n'importe où à l'extérieur de la fenêtre texte. La couleur du texte sélectionné doit être rose de sombres.

  5. Activez l'espace blanc visible. (Dans le menu Edition, pointez sur Avancé puis cliquez sur L'espace blanc de vue). Tapez des onglets dans le texte. Les flèches rouges représentent des tabulations doivent être affichées.

Voir aussi

Concepts

Points d'extension de l'éditeur