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
Créer des pages options à l'aide de automation
Créer des pages options à l'aide de les assemblys d'interopérabilité