Partager via


Créer une page d’options

Cette procédure pas à pas crée une page Outils/Options simple qui utilise une grille de propriétés pour examiner et définir des propriétés.

Pour enregistrer ces propriétés et les restaurer à partir d’un fichier de paramètres, procédez comme suit, puis consultez Créer une catégorie de paramètres.

Le MPF fournit deux classes pour vous aider à créer des pages Options d’outils, la Package classe et la DialogPage classe. Vous créez un VSPackage pour fournir un conteneur pour ces pages en subclassant la Package classe. Vous créez chaque page d’options d’outils en dérivant de la DialogPage classe.

Page Créer une grille d’options d’outils

Dans cette section, vous allez créer une grille de propriétés Options d’outils simple. Vous utilisez cette grille pour afficher et modifier la valeur d’une propriété.

Pour créer le projet VSIX et ajouter un VSPackage

  1. Chaque extension Visual Studio commence par un projet de déploiement VSIX, qui contiendra les ressources d’extension. Créez un projet VSIX Visual Studio nommé MyToolsOptionsExtension. Vous trouverez le modèle de projet VSIX dans la boîte de dialogue Nouveau projet en recherchant « vsix ».

  2. Ajoutez un VSPackage en ajoutant un modèle d’élément de package Visual Studio nommé MyToolsOptionsPackage. Dans le Explorateur de solutions, cliquez avec le bouton droit sur le nœud du projet, puis sélectionnez Ajouter>un nouvel élément. Dans la boîte de dialogue Ajouter un nouvel élément, accédez à l’extensibilité des éléments>Visual C# et sélectionnez Package Visual Studio. Dans le champ Nom en bas de la boîte de dialogue, remplacez le nom MyToolsOptionsPackage.csdu fichier par . Pour plus d’informations sur la création d’un VSPackage, consultez Créer une extension avec un VSPackage.

Pour créer la grille de propriétés Options des outils

  1. Ouvrez le fichier MyToolsOptionsPackage dans l’éditeur de code.

  2. Ajoutez l’instruction using suivante.

    using System.ComponentModel;
    
  3. Déclarez une OptionPageGrid classe et dérivez-la de DialogPage.

    public class OptionPageGrid : DialogPage
    {  }
    
  4. Appliquez une ProvideOptionPageAttribute valeur à la VSPackage classe à affecter à la classe un nom de page options et une catégorie d’options pour OptionPageGrid. Le résultat devrait ressembler à ceci :

    [PackageRegistration(UseManagedResourcesOnly = true)]
    [InstalledProductRegistration("#110", "#112", "1.0", IconResourceID = 400)]
    [ProvideMenuResource("Menus.ctmenu", 1)]
    [Guid(GuidList.guidMyToolsOptionsPkgString)]
    [ProvideOptionPage(typeof(OptionPageGrid),
        "My Category", "My Grid Page", 0, 0, true)]
    public sealed class MyToolsOptionsPackage : Package
    
  5. Ajoutez une OptionInteger propriété à la OptionPageGrid classe.

    public class OptionPageGrid : DialogPage
    {
        private int optionInt = 256;
    
        [Category("My Category")]
        [DisplayName("My Integer Option")]
        [Description("My integer option")]
        public int OptionInteger
        {
            get { return optionInt; }
            set { optionInt = value; }
        }
    }
    

    Remarque

    L’implémentation par défaut des DialogPage propriétés prenant en charge des convertisseurs appropriés ou qui sont des structures ou des tableaux qui peuvent être développés dans des propriétés qui ont des convertisseurs appropriés. Pour obtenir la liste des convertisseurs, consultez l’espace System.ComponentModel de noms.

  6. Générez le projet et commencez le débogage.

  7. Dans l’instance expérimentale de Visual Studio, dans le menu Outils , cliquez sur Options.

    Dans le volet gauche, vous devez voir Ma catégorie. (Les catégories d’options sont répertoriées par ordre alphabétique. Il doit donc apparaître à mi-chemin vers le bas de la liste.) Ouvrez Ma catégorie , puis cliquez sur Ma page Grille. La grille des options s’affiche dans le volet droit. La catégorie de propriété est Mes options, et le nom de la propriété est My Integer Option. La description de la propriété, Option Mon entier, apparaît en bas du volet. Remplacez la valeur de sa valeur initiale de 256 par une autre valeur. Cliquez sur OK, puis rouvrez ma page Grille. Vous pouvez voir que la nouvelle valeur persiste.

    Votre page d’options est également disponible via la zone de recherche de Visual Studio. Dans la zone de recherche située en haut de l’IDE, tapez My Category et vous verrez My Category -> My Grid Page list dans les résultats.

Créer une page personnalisée Options d’outils

Dans cette section, vous allez créer une page Options d’outils avec une interface utilisateur personnalisée. Vous utilisez cette page pour afficher et modifier la valeur d’une propriété.

  1. Ouvrez le fichier MyToolsOptionsPackage dans l’éditeur de code.

  2. Ajoutez l’instruction using suivante.

    using System.Windows.Forms;
    
  3. Ajoutez une OptionPageCustom classe, juste avant la OptionPageGrid classe. Dérivez la nouvelle classe de DialogPage.

    public class OptionPageCustom : DialogPage
    {
        private string optionValue = "alpha";
    
        public string OptionString
        {
            get { return optionValue; }
            set { optionValue = value; }
        }
    }
    
  4. Ajoutez un attribut GUID. Ajoutez une propriété OptionString :

    [Guid("00000000-0000-0000-0000-000000000000")]
    public class OptionPageCustom : DialogPage
    {
        private string optionValue = "alpha";
    
        public string OptionString
        {
            get { return optionValue; }
            set { optionValue = value; }
        }
    }
    
  5. Appliquez une seconde ProvideOptionPageAttribute à la classe VSPackage. Cet attribut affecte à la classe un nom de page options et de catégorie d’options.

    [PackageRegistration(UseManagedResourcesOnly = true)]
    [InstalledProductRegistration("#110", "#112", "1.0", IconResourceID = 400)]
    [ProvideMenuResource("Menus.ctmenu", 1)]
    [Guid(GuidList.guidMyToolsOptionsPkgString)]
    [ProvideOptionPage(typeof(OptionPageGrid),
        "My Category", "My Grid Page", 0, 0, true)]
    [ProvideOptionPage(typeof(OptionPageCustom),
        "My Category", "My Custom Page", 0, 0, true)]
    public sealed class MyToolsOptionsPackage : Package
    
  6. Ajoutez un nouveau contrôle utilisateur nommé MyUserControl au projet.

  7. Ajoutez un contrôle TextBox au contrôle utilisateur.

    Dans la fenêtre Propriétés , dans la barre d’outils, cliquez sur le bouton Événements , puis double-cliquez sur l’événement Quitter . Le nouveau gestionnaire d’événements apparaît dans le code MyUserControl.cs .

  8. Ajoutez un champ public OptionsPage , une Initialize méthode à la classe de contrôle et mettez à jour le gestionnaire d’événements pour définir la valeur d’option sur le contenu de la zone de texte :

    public partial class MyUserControl : UserControl
    {
        public MyUserControl()
        {
            InitializeComponent();
        }
    
        internal OptionPageCustom optionsPage;
    
        public void Initialize()
        {
            textBox1.Text = optionsPage.OptionString;
        }
    
        private void textBox1_Leave(object sender, EventArgs e)
        {
            optionsPage.OptionString = textBox1.Text;
        }
    }
    

    Le optionsPage champ contient une référence à l’instance parente OptionPageCustom . La Initialize méthode s’affiche OptionString dans la zone de texte. Le gestionnaire d’événements écrit la valeur actuelle de TextBox dans le moment où le OptionString focus quitte la Zone de texte.

  9. Dans le fichier de code du package, ajoutez une substitution pour la propriété à la OptionPageCustom.Window OptionPageCustom classe pour créer, initialiser et retourner une instance de MyUserControl. La classe doit maintenant ressembler à ceci :

    [Guid("00000000-0000-0000-0000-000000000000")]
    public class OptionPageCustom : DialogPage
    {
        private string optionValue = "alpha";
    
        public string OptionString
        {
            get { return optionValue; }
            set { optionValue = value; }
        }
    
        protected override IWin32Window Window
        {
            get
            {
                MyUserControl page = new MyUserControl();
                page.optionsPage = this;
                page.Initialize();
                return page;
            }
        }
    }
    
  10. Générez et exécutez le projet.

  11. Dans l’instance expérimentale, cliquez sur Options d’outils>.

  12. Recherchez Ma catégorie , puis ma page personnalisée.

  13. Modifiez la valeur d’OptionString. Cliquez sur OK, puis rouvrez ma page personnalisée. Vous pouvez voir que la nouvelle valeur a été conservée.

Options d’accès

Dans cette section, vous obtenez la valeur d’une option à partir du VSPackage qui héberge la page Options des outils associées. La même technique peut être utilisée pour obtenir la valeur de n’importe quelle propriété publique.

  1. Dans le fichier de code du package, ajoutez une propriété publique appelée OptionInteger à la classe MyToolsOptionsPackage .

    public int OptionInteger
    {
        get
        {
            OptionPageGrid page = (OptionPageGrid)GetDialogPage(typeof(OptionPageGrid));
            return page.OptionInteger;
        }
    }
    
    

    Ce code appelle GetDialogPage pour créer ou récupérer une OptionPageGrid instance. OptionPageGrid appelle LoadSettingsFromStorage à charger ses options, qui sont des propriétés publiques.

  2. Ajoutez maintenant un modèle d’élément de commande personnalisé nommé MyToolsOptionsCommand pour afficher la valeur. Dans la boîte de dialogue Ajouter un nouvel élément, accédez à Visual C#>Extensibilité et sélectionnez Commande personnalisée. Dans le champ Nom en bas de la fenêtre, remplacez le nom du fichier de commande par MyToolsOptionsCommand.cs.

  3. Dans le fichier MyToolsOptionsCommand , remplacez le corps de la méthode de ShowMessageBox la commande par les éléments suivants :

    private void ShowMessageBox(object sender, EventArgs e)
    {
        MyToolsOptionsPackage myToolsOptionsPackage = this.package as MyToolsOptionsPackage;
        System.Windows.Forms.MessageBox.Show(string.Format(CultureInfo.CurrentCulture, "OptionInteger: {0}", myToolsOptionsPackage.OptionInteger));
    }
    
    
  4. Générez le projet et commencez le débogage.

  5. Dans l’instance expérimentale, dans le menu Outils , cliquez sur Appeler MyToolsOptionsCommand.

    Une boîte de message affiche la valeur actuelle de OptionInteger.

Page Ouvrir les options

Dans cette section, vous allez ajouter une commande et un événement pour que le bouton ouvre la page options

  1. Tout d’abord, ajoutez un fichier appelé OpenPageCommand.cs.

  2. Ensuite, ouvrez OpenPageCommand.cs et modifiez votre méthode Execute.

    private void Execute(object sender, EventArgs e)
    {
        ThreadHelper.ThrowIfNotOnUIThread();
        Type optionsPageType = typeof(OptionPageCustom);
        Instance.package.ShowOptionPage(optionsPageType);
    }
    
  3. Exécutez le projet, puis cliquez sur le bouton Appeler (il se trouve sous l’option Outil par défaut), puis vous pouvez voir que votre page d’options est ouverte.

  4. Plus d’informations sur la page d’options d’ouverture peuvent faire référence aux documents suivants