Création de Pages d’OptionsCreating Options Pages

Dans le Visual StudioVisual Studio infrastructure de package gérée, les classes dérivées de DialogPage étendre le Visual StudioVisual Studio IDE en ajoutant Options pages sous le outils menu.In the Visual StudioVisual Studio managed package framework, classes derived from DialogPage extend the Visual StudioVisual Studio IDE by adding Options pages under the Tools menu.

Objet qui implémente une donnée Option outils page est associée à des VSPackages spécifiques par le ProvideOptionPageAttribute objet.An object implementing a given Tools Option page is associated with specific VSPackages by the ProvideOptionPageAttribute object.

Étant donné que l’environnement instancie l’objet qui implémente un particulier Outils Options page lorsque cette page est affichée par l’IDE :Because the environment instantiates the object implementing a particular Tools Options page when that particular page is displayed by the IDE:

  • A Option outils page doit être implémentée sur son propre objet et non sur l’objet qui implémente un VSPackage.A Tools Option page should be implemented on its own object, and not on the object implementing a VSPackage.

  • Un objet ne peut pas implémenter plusieurs Outils Options pages.An object cannot implement multiple Tools Options pages.

L’inscription d’un fournisseur de Page d’Options OutilsRegistering as a Tools Options Page Provider

Une VSPackage prise en charge configuration de l’utilisateur via Outils Options pages indique les objets qui fournit ces Outils Options pages en appliquant des instances de ProvideOptionPageAttribute appliquée à la Packagemise en œuvre.A VSPackage supporting user configuration through Tools Options pages indicates the objects providing these Tools Options pages by applying instances of ProvideOptionPageAttribute applied to the Package implementation.

Il doit y avoir une seule instance de ProvideOptionPageAttribute pour chaque DialogPage-dérivées du type qui implémente un Outils Options page.There must be one instance of ProvideOptionPageAttribute for every DialogPage-derived type that implements a Tools Options page.

Chaque instance de ProvideOptionPageAttribute utilise le type qui implémente le Outils Options page, les chaînes qui contiennent la catégorie et sous-catégorie utilisé pour identifier un Outils Options page et des ressources informations pour enregistrer le type comme fournissant un Outils Options page.Each instance of ProvideOptionPageAttribute uses the type that implements the Tools Options page, strings that contain the category and sub-category used to identify a Tools Options page, and resource information to register the type as providing a Tools Options page.

Outils de rendre persistant l’état Page OptionsPersisting Tools Options Page State

Si un Outils Options mise en œuvre de la page est enregistré avec prise en charge automation activé, l’IDE état de la page persistant, ainsi que tous les autres Outils Options pages.If a Tools Options page implementation is registered with automation support enabled, the IDE persists the page's state along with all other Tools Options pages.

Un VSPackage peut gérer sa propre persistance à l’aide de ProvideProfileAttribute.A VSPackage can manage its own persistence by using ProvideProfileAttribute. Qu’une ou l’autre méthode de persistance doit être utilisé.Only one or the other method of persistence should be used.

Classe d’implémentation DialogPageImplementing DialogPage Class

Objet qui fournit l’implémentation d’un VSPackage d’un DialogPage-type dérivé peut tirer parti des fonctionnalités héritées suivantes :An object providing a VSPackage's implementation of a DialogPage-derived type can take advantage of the following inherited features:

  • Une fenêtre d’interface utilisateur par défaut.A default user interface window.

  • A par défaut mécanisme de persistance disponible soit if ProvideProfileAttribute est appliqué à la classe, ou si le SupportsProfiles est définie sur true pour la ProvideOptionPageAttribute qui est appliqué à la classe.A default persistence mechanism available either if ProvideProfileAttribute is applied to the class, or if the SupportsProfiles property is set to true for the ProvideOptionPageAttribute that is applied to the class.

  • Prise en charge d’Automation.Automation support.

    La configuration minimale requise pour un objet qui implémente un Outils Options à l’aide de la page DialogPage est l’ajout de propriétés publiques.The minimum requirement for an object implementing a Tools Options page using DialogPage is the addition of public properties.

    Si la classe est correctement enregistré en tant qu’un Outils Options page fournisseur, puis ses propriétés publiques sont disponibles sur le Options section de la outils menu sous la forme d’un grille des propriétés.If the class properly registered as a Tools Options page provider, then its public properties are available on the Options section of the Tools menu in the form of a property grid.

    Toutes ces fonctionnalités par défaut peuvent être remplacées.All these default features can be overridden. Par exemple, pour créer un utilisateur plus sophistiqué interface requiert uniquement substituer l’implémentation par défaut de Window.For example, to create a more sophisticated user interface requires only overriding the default implementation of Window.

ExempleExample

Ce qui suit est une implémentation « hello world » simple d’une page d’options.What follows is a simple "hello world" implementation of an options page. Ajouter le code suivant à un projet par défaut créé par le modèle de Package Visual Studio avec le commande de Menu option sélectionnée va vous montrer correctement fonctionnalité de page d’option.Adding the following code to a default project created by the Visual Studio Package Template with the Menu Command option selected will adequately demonstrate option page functionality.

DescriptionDescription

La classe suivante définit une page d’options minimal « hello world ».The following class defines a minimal "hello world" options page. Lors de l’ouverture, l’utilisateur peut définir le public HelloWorld propriété dans une grille des propriétés.When opened, the user can set the public HelloWorld property in a property grid.

CodeCode

using System;
using Microsoft.VisualStudio.Shell;

namespace Company.UIUserSettingsToolsOptionsPages
{
    class HelloWorldOptions : DialogPage
    {
        bool helloWorld = true;
        public bool HelloWorld
        {
            get { return helloWorld; }
            set { helloWorld = value; }
        }
    }
}
Imports System
Imports Microsoft.VisualStudio.Shell

Namespace Company.UIUserSettingsToolsOptionsPages
    Class HelloWorldOptions
        Inherits DialogPage
        Private m_helloWorld As Boolean = True
        Public Property HelloWorld() As Boolean
            Get
                Return m_helloWorld
            End Get
            Set(ByVal value As Boolean)
                m_helloWorld = value
            End Set
        End Property
    End Class
End Namespace

DescriptionDescription

Appliquer l’attribut suivant à la classe de package propose les options de page lors du chargement du package.Applying the following attribute to the package class makes the options page available when the package loads. Les nombres sont arbitraire ID de ressource de la catégorie et la page, et la valeur booléenne à la fin spécifie si la page prend en charge automation.The numbers are arbitrary resource IDs for the category and the page, and the Boolean value at the end specifies whether the page supports automation.

CodeCode

[ProvideOptionPage(typeof(HelloWorldOptions), 
    "Hello World Category", "Hello World Page", 
    1000, 1001, false)]
<PackageRegistration(UseManagedResourcesOnly:=True)> _
<DefaultRegistryRoot("Software\Microsoft\VisualStudio\9.0")> _
<InstalledProductRegistration(False, "#110", "#112", "1.0", IconResourceID:=400)> _
<ProvideLoadKey("Standard", "1.0", "Package Name", "Company", 1)> _
<ProvideMenuResource(1000, 1)> _
<Guid(GuidList.guidPkgString)> _
<ProvideOptionPage(GetType(HelloWorldOptions), "Hello World Category", "Hello World Page", 1000, 1001, False)> _
Public NotInheritable Class UIUserSettingsToolsOptionsPagesPackage
    Inherits Package

DescriptionDescription

Le Gestionnaire d’événements suivant affiche un résultat en fonction de la valeur de la propriété définie dans la page d’options.The following event handler displays a result depending on the value of the property set in the options page. Elle utilise le GetDialogPage méthode avec le résultat est explicitement converti dans le type de page option personnalisée pour accéder aux propriétés exposées par la page.It uses the GetDialogPage method with the result explicitly cast into the custom option page type to access the properties exposed by the page.

Dans le cas d’un projet généré par le modèle de package, appelez cette fonction à partir de la MenuItemCallback fonction à attacher à la commande par défaut ajoutée à la outils menu.In the case of a project generated by the package template, call this function from the MenuItemCallback function to attach it to the default command added to the Tools menu.

CodeCode

private void ShowHelloWorld(object sender, EventArgs e)
{
    var hw = GetDialogPage(typeof(HelloWorldOptions)) 
        as HelloWorldOptions;
    if (hw.HelloWorld == true)
    {
        MessageBox.Show("Hello World!");
    }
    else MessageBox.Show("Goodbye.");
}
Private Sub ShowHelloWorld(ByVal sender As Object, ByVal e As EventArgs)
    Dim hw = TryCast(GetDialogPage(GetType(HelloWorldOptions)), HelloWorldOptions)
    If hw.HelloWorld = True Then
        MessageBox.Show("Hello World!")
    Else
        MessageBox.Show("Goodbye.")
    End If
End Sub

Voir aussiSee Also

Options et paramètres d’extension utilisateur Extending User Settings and Options
Prise en charge de l’automatisation pour les pages OptionsAutomation Support for Options Pages