Procédure pas - à - pas : Paramètres utilisateur d'enregistrement sur une page de démarrage à l'aide de automation
Vous pouvez accéder au modèle Automation d'une page de démarrage, et vous pouvez utiliser le modèle Automation de conserver des paramètres utilisateur. En suivant cette procédure pas - à - pas, vous pouvez créer un contrôle qui enregistre un paramètre au Registre lorsque l'utilisateur clique sur un bouton, puis récupère ce paramètre chaque fois que la page de démarrage charge. Étant donné que le modèle de projet de page de démarrage inclut un contrôle utilisateur personnalisable, et les appels par défaut de la page de démarrage XAML qui contrôlent, vous ne devez pas modifier la page de démarrage elle-même.
Les paramètres de registre qui est instancié dans cette procédure pas - à - pas est une instance de l'interface d' IVsWritableSettingsStore , qui la lit et écrit dans l'emplacement de Registre suivant lorsqu'elle est appelée : HKCU \Software\Microsoft\VisualStudio \ 10,0 \CollectionName
Lorsqu'il est exécuté dans l'instance expérimentale de Visual Studio, le magasin de paramètres la lit et écrit à \Software\Microsoft\VisualStudio\10.0Exp HKCU \CollectionName.
Pour plus d'informations sur la façon de rendre des paramètres, consultez persistance d'état et l'IDE de Visual Studio ou le Prise en charge de la persistance d'état. Pour plus d'informations sur le modèle Automation, consultez Extension de l'environnement Visual Studio ou le Référencement des assemblys d'automation et de l'objet DTE2.
Composants requis
Pour exécuter cette procédure, vous devez installer Kit de développement logiciel Visual Studio 2010. Vous devez également installer le modèle de projet de page de démarrage.
Notes
Pour plus d'informations sur le kit de développement Visual Studio, consultez Étendre la présentation de Visual Studio.Pour télécharger le kit de développement Visual Studio, consultez Visual Studio Extensibility Developer Center sur le site Web MSDN.
Vous pouvez télécharger le modèle de projet de page de démarrage à l'aide de Gestionnaire d'extensions.
Configuration du projet
Pour configurer le projet pour cette procédure pas - à - pas
Créez un projet de page de démarrage à l'aide de le modèle de projet de page de démarrage, comme décrit dans pages initiales. nommez le projet SaveMySettings.
Dans Explorateur de solutions, ajoutez des références d'assembly suivantes au projet de StartPageControl :
EnvDTE et EnvDTE80
Microsoft.VisualStudio.OLE.Interop
Microsoft.VisualStudio.Shell.Interop.10.0
L'EnvDTE et EnvDTE80 les assemblys fournissent le modèle objet Automation. Les assemblys d'interopérabilité fournissent l'accès aux objets spécifiques du shell Visual Studio.
ouvrez MyControl.xaml.
Du volet XAML, dans la définition de niveau supérieur d'élément d' UserControl , ajoutez la déclaration event suivante après les déclarations d'espace de noms.
Loaded="OnLoaded"
Dans le volet de conception, cliquez sur la zone principale du contrôle, puis appuyez sur la touche SUPPR.
Cela supprime l'élément et tout à l'intérieur, et des feuilles d' Border seul l'élément de niveau supérieur d' Grid .
de boîte à outils, faites glisser un contrôle d' StackPanel à la grille.
faites glisser maintenant TextBlock, TextBox, et un bouton à StackPanel.
Ajoutez un attribut de x:Nom pour TextBox, et un événement d' Click pour Button, comme indiqué dans l'exemple suivant.
<StackPanel Width="300" HorizontalAlignment="Center" VerticalAlignment="Center"> <TextBlock Width="140" FontSize="14">Enter your setting</TextBlock> <TextBox x:Name="txtblk" Margin="0, 5, 0, 10" Width="140" /> <Button Click="Button_Click" Width="100">Save My Setting</Button> </StackPanel>
Implémentation du contrôle utilisateur
pour implémenter le contrôle utilisateur
Dans le volet XAML, cliquez avec le bouton droit sur l'attribut d' Click de l'élément d' Button , puis cliquez sur Naviguer vers le gestionnaire d'événements.
Cela ouvre MyControl.xaml.cs, et crée un gestionnaire de stub pour l'événement d' Button_Click .
Ajoutez les instructions suivantes d' using au début du fichier.
using EnvDTE80; using Microsoft.VisualStudio.Shell; using Microsoft.VisualStudio.Shell.Interop; using System.ComponentModel;
Ajoutez une propriété privée d' SettingsStore , comme indiqué dans l'exemple suivant.
private IVsWritableSettingsStore _settingsStore = null; private IVsWritableSettingsStore SettingsStore { get { if (_settingsStore == null) { // Get a reference to the DTE from the DataContext. var typeDescriptor = DataContext as ICustomTypeDescriptor; var propertyCollection = typeDescriptor.GetProperties(); var dte = propertyCollection.Find("DTE", false).GetValue( DataContext) as DTE2; // Get the settings manager from the DTE. var serviceProvider = new ServiceProvider( (Microsoft.VisualStudio.OLE.Interop.IServiceProvider)dte); var settingsManager = serviceProvider.GetService( typeof(SVsSettingsManager)) as IVsSettingsManager; // Write the user settings to _settingsStore. settingsManager.GetWritableSettingsStore( (uint)__VsSettingsScope.SettingsScope_UserSettings, out _settingsStore); } return _settingsStore; } }
Cette propriété correspond d'abord une référence à l'interface d' DTE2 , qui contient le modèle objet Automation, d' DataContext du contrôle utilisateur, puis utilise DTE pour obtenir une instance de l'interface d' IVsSettingsManager . Il utilise cette instance pour retourner les paramètres d'utilisateur actuel.
complétez l'événement d' Button_Click comme suit.
private void Button_Click(object sender, RoutedEventArgs e) { int exists = 0; SettingsStore.CollectionExists("MySettings", out exists); if (exists != 1) { SettingsStore.CreateCollection("MySettings"); } SettingsStore.SetString("MySettings", "MySetting", txtblk.Text); }
Cela écrit le contenu de la zone de texte à un champ « MySetting » dans une collection de « MySettings » dans le Registre. Si la collection n'existe pas, il est créé.
Ajoutez le code suivant au gestionnaire pour l'événement d' OnLoaded du contrôle utilisateur.
private void OnLoaded(Object sender, RoutedEventArgs e) { string value; SettingsStore.GetStringOrDefault( "MySettings", "MySetting", "", out value); txtblk.Text = value; }
Cela définit le texte de la zone de texte à la valeur actuelle de « MySetting ».
Génération du contrôle utilisateur.
dans Explorateur de solutions, ouvrez source.extension.vsixmanifest.
Dans l'éditeur de manifeste, définissez Nom du produit pour enregistrer ma page de démarrage de paramètres.
Cela définit le nom de la page de démarrage car il est d'apparaître dans la liste de Personnaliser la page de démarrage dans la boîte de dialogue d' Options .
génération StartPage.xaml.
Test du contrôle
Pour tester le contrôle utilisateur
Appuyez sur F5.
l'instance expérimentale de Visual Studio s'ouvre.
Dans l'instance expérimentale de, dans le menu d' Outils , cliquez sur Options.
Dans le nœud de Environnement , cliquez sur Démarrage, puis, dans la liste de Personnaliser la page de démarrage , sélectionnez [Extension installée] enregistrez ma page de démarrage de paramètres.
Cliquez sur OK.
Fermez la page de démarrage si ouverte, puis, dans le menu d' Afficher , cliquez sur Page de démarrage.
Sur la page de démarrage, cliquez sur l'onglet de MyControl .
Dans la zone de texte, tapez Cat, puis cliquez sur Enregistrez mon paramètre.
Fermez la page de démarrage puis ouvrez -le de nouveau.
Le mot « Cat » doit s'afficher dans la zone de texte.
remplacez le mot « Cat » par le mot « chien ». Ne cliquez pas sur le bouton.
Fermez la page de démarrage puis ouvrez -le de nouveau.
Le mot « chien » doit s'afficher dans la zone de texte, bien que le paramètre n'ait pas été enregistré. Cela se produit parce que Visual Studio conserve les fenêtres Outil dans la mémoire, même si elles sont fermées, jusqu'à ce que Visual Studio lui-même soit fermé.
Fermez l'instance expérimentale de Visual Studio.
appuyez sur F5 pour rouvrir l'instance expérimentale.
Le mot « Cat » doit s'afficher dans la zone de texte.
Étapes suivantes
Vous pouvez modifier ce contrôle utilisateur pour enregistrer et récupérer un certain nombre de paramètres personnalisés à l'aide de valeurs différentes de différents gestionnaires d'événements pour obtenir et définir la propriété d' SettingsStore . Lorsque vous utilisez un paramètre différent d' propertyName pour chaque appel à SetString, les valeurs ne remplaceront pas d'un autre dans le Registre.