Partager via


Créer des pages options en utilisant les classes managées du package

Dans Visual Studio l'infrastructure gérée de package, les classes dérivées d' DialogPage étendent Visual Studio l'IDE en ajoutant des pages options sous le menu d' Outils .

Un objet implémentant une page donnée d' option d'outils est associé à des VSPackages spécifique par l'objet d' ProvideOptionPageAttribute .

Étant donné que l'environnement instancie l'objet implémentant une page d' options d'outils lorsque cette page particulière est affichée par l'IDE :

  • Une page d' option d'outils doit être implémentée sur son propre objet, et pas sur l'objet implémentant un VSPackage.

  • Un objet ne peut pas implémenter plusieurs pages d' options d'outils .

Stocker comme fournisseur de la page d'options Outils

Un VSPackage la configuration utilisateur que de prise en charge via des pages d' options d'outils indique les objets fournissant ces pages d' options d'outils en appliquant des instances d' ProvideOptionPageAttribute appliquée à Package l'implémentation.

Il doit exister une instance d' ProvideOptionPageAttribute pour chaque DialogPage- type dérivé qui implémente une page d' options d'outils .

Chaque instance d' ProvideOptionPageAttribute utilise le type qui implémente la page d' options d'outils , les chaînes qui contiennent la catégorie et la sous-catégorie utilisées pour identifier une page d' options d'outils , et les informations sur les ressources pour stocker le type comme fourniture d'une page d' options d'outils . Pour plus d'informations, consultez Utilisation des pages options.

Rendre persistant l'état de la page d'options Outils

Si une implémentation de page d' options d'outils est stocké avec la prise en charge d'automation activée, l'IDE rend l'état de la page avec toutes autres pages d' options d'outils . Pour plus d'informations, consultez Utilisation des pages options.

Un VSPackage peut gérer sa propre persistance à l'aide de ProvideProfileAttribute. Seule l'une ou une autre méthode de persistance doit être utilisée.

implémenter la classe de DialogPage

Un objet qui fournit l'implémentation d'un VSPackage d' DialogPage- type dérivé peut tirer parti des fonctionnalités héritées suivantes :

  • Une fenêtre par défaut de l'interface utilisateur.

  • Un soit disponible de mécanisme de persistance par défaut permettant si ProvideProfileAttribute est appliqué à la classe, ou si la propriété d' SupportsProfiles est définie à true pour ProvideOptionPageAttribute appliquée à la classe.

  • prise en charge d'automation.

La configuration minimale requise pour un objet implémentant une page d' options d'outils à l'aide de DialogPage est l'ajout des propriétés publiques.

Si la classe inscrite convenablement comme fournisseur de la page d' options d'outils , ses propriétés publiques sont disponibles dans la section d' Options le menu pour Outils sous la forme de grille des propriétés.

toutes ces fonctionnalités par défaut peuvent être substituées. Par exemple, pour créer une interface utilisateur plus élaborée requiert que substituer seule l'implémentation par défaut d' Window.

Exemple

Voici « hello une implémentation simple world » d'une page d'options. Ajoutant le code suivant à un projet par défaut créé par le modèle de package Visual Studio avec l'option de Commande de menu sélectionnée affiche correctement la fonctionnalité de page d'option.

Description

La classe suivante définit « bonjour une page d'options minimale du world ». une fois ouvert, l'utilisateur peut définir la propriété publique d' HelloWorld dans une grille des propriétés.

Code

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
using System;
using Microsoft.VisualStudio.Shell;

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

Description

L'application de l'attribut suivant à la classe du package rend la page d'options disponibles lorsque le package charge. Les nombres sont les identificateurs arbitraires de ressource pour la catégorie et la page, et la valeur booléenne à la fin spécifie si la page prend en charge automation.

Code

<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
[ProvideOptionPage(typeof(HelloWorldOptions), 
    "Hello World Category", "Hello World Page", 
    1000, 1001, false)]

Description

Le gestionnaire d'événements suivant affiche un résultat en fonction de la valeur du jeu de propriétés de la page d'options. Il utilise la méthode d' GetDialogPage avec le résultat a explicitement cast en type personnalisé de la page d'option pour accéder aux propriétés exposées par la page.

Dans le cas d'un projet généré par le modèle de package, appelez cette fonction de la fonction d' MenuItemCallback pour la joindre à la commande par défaut ajoutée au menu d' Outils .

Code

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
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.");
}

Voir aussi

Concepts

Prise en charge de l'automation des pages options

Stocker les pages options personnalisées

Utilisation des pages options

Créer des pages options à l'aide de automation

Créer des pages options à l'aide de les assemblys d'interopérabilité

Autres ressources

Paramètres utilisateur et options

Pages options