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
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 ».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 nomMyToolsOptionsPackage.cs
du 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
Ouvrez le fichier MyToolsOptionsPackage dans l’éditeur de code.
Ajoutez l’instruction using suivante.
using System.ComponentModel;
Déclarez une
OptionPageGrid
classe et dérivez-la de DialogPage.public class OptionPageGrid : DialogPage { }
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
Ajoutez une
OptionInteger
propriété à laOptionPageGrid
classe.Appliquez une System.ComponentModel.CategoryAttribute valeur à affecter à la propriété une catégorie de grille de propriétés.
Appliquez un System.ComponentModel.DisplayNameAttribute nom à affecter à la propriété.
Appliquez une System.ComponentModel.DescriptionAttribute valeur à affecter à la propriété une description.
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.
Générez le projet et commencez le débogage.
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é.
Ouvrez le fichier MyToolsOptionsPackage dans l’éditeur de code.
Ajoutez l’instruction using suivante.
using System.Windows.Forms;
Ajoutez une
OptionPageCustom
classe, juste avant laOptionPageGrid
classe. Dérivez la nouvelle classe deDialogPage
.public class OptionPageCustom : DialogPage { private string optionValue = "alpha"; public string OptionString { get { return optionValue; } set { optionValue = value; } } }
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; } } }
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
Ajoutez un nouveau contrôle utilisateur nommé MyUserControl au projet.
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 .
Ajoutez un champ public
OptionsPage
, uneInitialize
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 parenteOptionPageCustom
. LaInitialize
méthode s’afficheOptionString
dans la zone de texte. Le gestionnaire d’événements écrit la valeur actuelle de TextBox dans le moment où leOptionString
focus quitte la Zone de texte.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 deMyUserControl
. 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; } } }
Générez et exécutez le projet.
Dans l’instance expérimentale, cliquez sur Options d’outils>.
Recherchez Ma catégorie , puis ma page personnalisée.
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.
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.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.
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)); }
Générez le projet et commencez le débogage.
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
Tout d’abord, ajoutez un fichier appelé OpenPageCommand.cs.
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); }
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.
Plus d’informations sur la page d’options d’ouverture peuvent faire référence aux documents suivants