Prise en charge des pages options
Cliquez sur Options dans le menu d' Outils ouvre la boîte de dialogue d' Options . Les options de cette boîte de dialogue seront appelés collectivement des pages options. Le contrôle d'arborescence dans le volet de navigation inclut des catégories d'options, et chaque catégorie contient des pages d'options. Lorsque vous sélectionnez une page, ses options s'affichent dans le volet droit. Ces pages vous permettent de modifier les valeurs des options pour spécifier l'état d'un VSPackage.
Prise en charge des pages options
La classe d' Package permet de créer des pages options et les catégories d'options. la classe d' DialogPage implémente une page d'options.
L'implémentation par défaut d' DialogPage propose ses propriétés publiques à un utilisateur dans une grille générique des propriétés. Vous pouvez personnaliser ce comportement en substituant différentes méthodes sur la page pour créer une page d'options personnalisée qui possède sa propre interface utilisateur (UI). Pour plus d'informations, consultez Procédure pas - à - pas : créer une page d'options.
La classe d' DialogPage implémente IProfileManager, qui fournit la persistance pour les pages options et également pour les paramètres utilisateur. Les implémentations par défaut des méthodes d' LoadSettingsFromStorage et d' SaveSettingsToStorage persistantes les modifications de propriété dans une section d'utilisateur du Registre si la propriété peut être convertie en chaîne et inversement.
Chemin d'accès au Registre de la page d'options
Par défaut, le chemin d'accès au Registre des propriétés gérées par une page d'options est déterminé en combinant UserRegistryRoot, le mot DialogPage, et tapez nom de la classe de la page d'options. Par exemple, une classe de page d'options peut être définie comme suit.
Namespace Company.OptionsPage
Public Class OptionsPageGeneral
Inherits DialogPage
End Class
End Namespace
namespace Company.OptionsPage
{
public class OptionsPageGeneral : DialogPage
{
}
}
Si UserRegistryRoot est \Software\Microsoft\VisualStudio\8.0Exp, then the property name and value pairs are subkeys of HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\8.0Exp\DialogPage\Company.OptionsPage.OptionsPageGeneral HKEY_CURRENT_USER.
Le chemin d'accès au Registre de la page d'options lui-même est déterminé en combinant ApplicationRegistryRoot, le mot, ToolsOptionsPages, et la catégorie et le nom de la page d'options. Par exemple, si la page d'options personnalisée qui possèdent la catégorie, mes pages d'option, puis ApplicationRegistryRoot est \SOFTWARE\Microsoft\VisualStudio\8.0Exp, then the options page has the registry key, HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0Exp\ToolsOptionsPages\My Option Pages\Custom HKEY_LOCAL_MACHINE.
Outils/attributs et disposition de la page d'options
L'attribut d' ProvideOptionPageAttribute détermine le regroupement des pages options personnalisées dans les catégories dans l'arborescence de navigation de la boîte de dialogue d' Options . l'attribut d' ProvideOptionPageAttribute associe une page d'options avec le VSPackage qui fournit l'interface. Prenons le fragment de code suivant :
<ProvideOptionPage(GetType(OptionsPageGeneral), "My Option Pages", "General", 101, 106, True),
ProvideOptionPage(GetType(OptionsPageCustom), "My Option Pages", "Custom", 101, 107, True),
Guid("B0002DC2-56EE-4931-93F7-70D6E9863940")>
Public Class MyPackage
Inherits Package
[ProvideOptionPage(typeof(OptionsPageGeneral),"My Option Pages", "General", 101, 106, true)]
[ProvideOptionPage(typeof(OptionsPageCustom), "My Option Pages", "Custom", 101, 107, true)]
[Guid("B0002DC2-56EE-4931-93F7-70D6E9863940")]
public class MyPackage : Package
Cela indique que MyPackage fournit deux pages options, OptionsPageGeneral et OptionsPageCustom. Dans la boîte de dialogue d' Options , les deux pages options s'affichent dans la catégorie de mes pages d'option comme Général et Personnalisée, respectivement.
Attributs et disposition d'option
l'interface utilisateur (UI) que la page fournit détermine l'apparence des options dans une page d'options personnalisée. La disposition, étiqueter, et la description des options dans une page d'options générique sont déterminés par les attributs suivants :
CategoryAttribute détermine la catégorie de l'option.
DisplayNameAttribute détermine le nom complet de l'option.
DescriptionAttribute détermine la description de l'option.
Notes
Des attributs, le SRCategory, le LocDisplayName, et le SRDescription d'équivalent, ressources de type chaîne en utiliser pour la localisation et sont définis dans managed project sample.
Prenons le fragment de code suivant :
Private _optionInt As Integer
<Category("My Options"),
DisplayName("Integer Option"),
Description("My integer option")>
Public Property OptionInteger() As Integer
Get
Return _optionInt
End Get
Set(ByVal value As Integer)
_optionInt = value
End Set
End Property
[Category("My Options")]
[DisplayName("Integer Option")]
[Description("My integer option")]
public int OptionInteger { get; set; }
l'option d'OptionInteger apparaît sur la page d'options comme option entière dans la catégorie de mes options . Si l'option est sélectionnée, la description, mon option entière, s'affiche dans la zone de description.
Pages options de accès d'un autre VSPackage
Un VSPackage qui héberge et gère une page d'options est accessible par programme accessible à partir d'un autre VSPackage à l'aide de le modèle Automation. Par exemple, dans le code suivant un VSPackage est enregistré comme héberger une page d'option.
<ProvideOptionPage(GetType(MyOptionPage), "My Category", "My Grid Page", 0, 0, True)>
<Guid("6bb6942e-014c-489e-a612-a935680f703d")>
Public NotInheritable Class MyToolsOptions
Inherits Package
[ProvideOptionPage(typeof(MyOptionPage), "My Category", "My Grid Page", 0, 0, true)]
[Guid("6bb6942e-014c-489e-a612-a935680f703d")]
public sealed class MyToolsOptions : Package
le fragment de code suivant obtient la valeur d'OptionInteger de MyOptionPage :
Dim dte As DTE = CType(GetService(GetType(DTE)), DTE)
Dim props As EnvDTE.Properties = dte.get_Properties("My Category", "My Grid Page")
Dim n As Integer = CInt(Fix(props.Item("OptionInteger").Value))
DTE dte = (DTE)GetService(typeof(DTE));
EnvDTE.Properties props = dte.get_Properties("My Category", "My Grid Page");
int n = (int)props.Item("OptionInteger").Value;
Lorsque l'attribut d' ProvideOptionPageAttribute enregistre une page d'options, la page est stockée sous la clé AutomationProperties si l'argument d' SupportsAutomation de l'attribut est true. L'automatisation examine cette entrée du Registre pour rechercher le VSPackage associé, et l'automation accède ensuite à la propriété via la page d'options hébergée, dans ce cas, ma grille.
Le chemin d'accès au Registre de la propriété automation est déterminé en combinant ApplicationRegistryRoot, le mot, AutomationProperties, et la catégorie et le nom de la page d'options. Par exemple, si la page d'options affiche la ma catégorie de catégorie, my nom de la grille, et l' ApplicationRegistryRoot, \SOFTWARE\Microsoft\VisualStudio\8.0Exp, then the automation property has the registry key, HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0Exp\AutomationProperties\My Category\My Grid Page HKEY_LOCAL_MACHINE.
Notes
Le nom canonique, ma grille de Category.My, est la valeur de la sous-clé de nom de cette clé.
Voir aussi
Tâches
Procédure pas - à - pas : créer une page d'options
Concepts
Exemples d'extensibilité Visual Studio
Prise en charge pour les catégories de paramètres