Tutorial: Guardar configuración de usuario en una página de inicioWalkthrough: Save user settings on a Start Page

Puede conservar la configuración de usuario para la página de inicio.You can persist user settings for your Start Page. Siguiendo este tutorial, puede crear un control que se guarda una configuración en el registro cuando el usuario hace clic en un botón y, a continuación, recupera ese valor cada vez que se carga la página de inicio.By following this walkthrough, you can create a control that saves a setting to the registry when the user clicks a button, and then retrieves that setting every time the Start Page loads. Porque la plantilla de proyecto de la página de inicio incluye un control de usuario personalizable, y el XAML de página de inicio predeterminado llama a ese control, no debe modificar la página de inicio de sí mismo.Because the Start Page project template includes a customizable user control, and the default Start Page XAML calls that control, you don't have to modify the Start Page itself.

El almacén de configuración que se crea una instancia en este tutorial es una instancia de la IVsWritableSettingsStore interfaz, que lee y escribe en la siguiente ubicación del registro cuando se llama: HKCU\Software\Microsoft\VisualStudio\14.0\ <NombreColección >The settings store that is instantiated in this walkthrough is an instance of the IVsWritableSettingsStore interface, which reads and writes to the following registry location when it's called: HKCU\Software\Microsoft\VisualStudio\14.0\<CollectionName>

Cuando se ejecuta en la instancia experimental de Visual Studio, el almacén de configuración lee y escribe en HKCU\Software\Microsoft\VisualStudio\14.0Exp\<NombreColección >.When it's running in the experimental instance of Visual Studio, the settings store reads and writes to HKCU\Software\Microsoft\VisualStudio\14.0Exp\<CollectionName>.

Para obtener más información acerca de cómo conservar la configuración, consulte Extending User Settings y opciones.For more information about how to persist settings, see Extending User Settings and Options.

Requisitos previosPrerequisites

Nota

Para seguir este tutorial, debe instalar el SDK de Visual Studio.To follow this walkthrough, you must install the Visual Studio SDK. Para obtener más información, consulte SDK de Visual Studio.For more information, see Visual Studio SDK.

Puede descargar la plantilla de proyecto de la página de inicio mediante el uso de Administrador de extensiones.You can download the Start Page project template by using Extension Manager.

Configurar el proyectoSetting up the project

Para configurar el proyecto para este tutorialTo configure the project for this walkthrough

  1. Cree un proyecto de la página de inicio como se describe en crear una página de inicio personalizada.Create a Start Page project as described in Create a custom Start Page. Denomine el proyecto SaveMySettings.Name the project SaveMySettings.

  2. En el Explorador de soluciones, agregue las siguientes referencias de ensamblado al proyecto StartPageControl:In Solution Explorer, add the following assembly references to the StartPageControl project:

    • EnvDTEEnvDTE

    • EnvDTE80EnvDTE80

    • Microsoft.VisualStudio.OLE.InteropMicrosoft.VisualStudio.OLE.Interop

    • Microsoft.VisualStudio.Shell.Interop.11.0Microsoft.VisualStudio.Shell.Interop.11.0

  3. Abra MyControl.xaml.Open MyControl.xaml.

  4. En el panel XAML, en el nivel superior UserControl definición de elemento, agregue la siguiente declaración de evento después de las declaraciones de espacio de nombres.From the XAML pane, in the top-level UserControl element definition, add the following event declaration after the namespace declarations.

    Loaded="OnLoaded"  
    
  5. En el panel de diseño, haga clic en el área del control principal y, a continuación, presione eliminar.In the design pane, click the main area of the control, and then press Delete.

    Este paso quita el Border elemento y todo lo que y deja solo la parte superior nivel Grid elemento.This step removes the Border element and everything in it, and leaves only the top level Grid element.

  6. Desde el cuadro de herramientas, arrastre un StackPanel control a la cuadrícula.From the Toolbox, drag a StackPanel control to the grid.

  7. Ahora, arrastre un TextBlock, un TextBoxy un botón para el StackPanel.Now drag a TextBlock, a TextBox, and a Button to the StackPanel.

  8. Agregar un x: Name atributo para el TextBoxy un Click eventos para el Button, como se muestra en el ejemplo siguiente.Add an x:Name attribute for the TextBox, and a Click event for the Button, as shown in the following example.

    <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>  
    

Implementar el control de usuarioImplement the user control

Para implementar el control de usuarioTo implement the user control

  1. En el panel de XAML, haga clic en el Click atributo de la Button elemento y, a continuación, haga clic en navegar al controlador de eventos.In the XAML pane, right-click the Click attribute of the Button element, and then click Navigate to Event Handler.

    Este paso abre MyControl.xaml.csy crea un controlador de código auxiliar para el Button_Click eventos.This step opens MyControl.xaml.cs, and creates a stub handler for the Button_Click event.

  2. Agregue las siguientes using instrucciones a la parte superior del archivo.Add the following using statements to the top of the file.

    using EnvDTE80;
    using Microsoft.VisualStudio.Shell;
    using Microsoft.VisualStudio.Shell.Interop;
    using System.ComponentModel;
    
  3. Agregar una privada SettingsStore propiedad, como se muestra en el ejemplo siguiente.Add a private SettingsStore property, as shown in the following example.

    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;  
        }  
    }  
    

    En primer lugar, esta propiedad obtiene una referencia a la DTE2 interfaz, que contiene el modelo de objetos de automatización de la DataContext del control de usuario y, a continuación, usa el objeto DTE para obtener una instancia de la IVsSettingsManager interfaz.This property first gets a reference to the DTE2 interface, which contains the Automation object model, from the DataContext of the user control, and then uses the DTE to get an instance of the IVsSettingsManager interface. A continuación, utiliza esa instancia para devolver la configuración del usuario actual.Then it uses that instance to return the current user settings.

  4. Rellene el Button_Click evento como se indica a continuación.Fill in the Button_Click event as follows.

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

    Escribe el contenido del cuadro de texto a un campo de "MySetting" en una colección de "MySettings" en el registro.This writes the content of the text box to a "MySetting" field in a "MySettings" collection in the registry. Si la colección no existe, se crea.If the collection does not exist, it's created.

  5. Agregue el siguiente controlador para el OnLoaded eventos del control de usuario.Add the following handler for the OnLoaded event of the user control.

    private void OnLoaded(Object sender, RoutedEventArgs e)  
    {  
        string value;  
        SettingsStore.GetStringOrDefault(  
            "MySettings", "MySetting", "", out value);  
        txtblk.Text = value;  
    }  
    

    Este código establece el texto del cuadro de texto en el valor actual de "MySetting".This code sets the text of the text box to the current value of "MySetting".

  6. Compilar el control de usuario.Build the user control.

  7. En el Explorador de soluciones, abra source.extension.vsixmanifest.In Solution Explorer, open source.extension.vsixmanifest.

  8. En el editor de manifiestos, establezca Product Name a Guardar página de inicio de la configuración de mi.In the manifest editor, set Product Name to Save My Settings Start Page.

    Esta función establece el nombre de la página de inicio que va a aparecer en el Personalizar página principal lista en el opciones cuadro de diálogo.This feature sets the name of the Start Page as it's to appear in the Customize Start Page list in the Options dialog box.

  9. Compilar StartPage.xaml.Build StartPage.xaml.

Probar el controlTest the control

Para probar el control de usuarioTo test the user control

  1. Presione F5.Press F5.

    Se abre la instancia experimental de Visual Studio.The experimental instance of Visual Studio opens.

  2. En la instancia experimental, en el herramientas menú, haga clic en opciones.In the experimental instance, on the Tools menu, click Options.

  3. En el entorno nodo, haga clic en inicioy, a continuación, en el Personalizar página principal lista, seleccione [extensión instalada] guardar mi configuración de página de inicio .In the Environment node, click Startup, and then, in the Customize Start Page list, select [Installed Extension] Save My Settings Start Page.

    Haga clic en Aceptar.Click OK.

  4. Cierre la página de inicio si está abierto y, a continuación, en el vista menú, haga clic en página de inicio.Close the Start Page if it's open, and then, on the View menu, click Start Page.

  5. En la página de inicio, haga clic en el MyControl ficha.On the Start Page, click the MyControl tab.

  6. En el cuadro de texto, escriba Caty, a continuación, haga clic en guardar mi configuración.In the text box, type Cat, and then click Save My Setting.

  7. Cierre la página de inicio y, a continuación, vuelva a abrirlo.Close the Start Page and then open it again.

    La palabra "Cat" se debe mostrar en el cuadro de texto.The word "Cat" should be displayed in the text box.

  8. Reemplace la palabra "Cat" con la palabra "Dog".Replace the word "Cat" with the word "Dog". No se hace clic en el botón.Do not click the button.

  9. Cierre la página de inicio y, a continuación, vuelva a abrirlo.Close the Start Page and then open it again.

    La palabra "Dog" se debe mostrar en el cuadro de texto, aunque no lo ha guardado la configuración porque Visual Studio conserva las ventanas de herramientas en la memoria, incluso si están cerrados, hasta que se cierre Visual Studio.The word "Dog" should be displayed in the text box, even though you didn't save the setting because Visual Studio keeps tool windows in memory, even if they are closed, until Visual Studio itself closes.

  10. Cierre la instancia experimental de Visual Studio.Close the experimental instance of Visual Studio.

  11. Presione F5 para volver a abrir la instancia experimental.Press F5 to reopen the experimental instance.

  12. La palabra "Cat" se debe mostrar en el cuadro de texto.The word "Cat" should be displayed in the text box.

Pasos siguientesNext steps

Puede modificar este control de usuario para guardar y recuperar cualquier número de configuración personalizada mediante el uso de valores distintos de los controladores de eventos diferentes para obtener y establecer el SettingsStore propiedad.You can modify this user control to save and retrieve any number of custom settings by using different values from different event handlers to get and set the SettingsStore property. Siempre use otro propertyName parámetro para cada llamada a SetString, los valores no sobrescriben entre sí en el registro.As long as you use a different propertyName parameter for each call to SetString, the values don't overwrite one another in the registry.

Vea tambiénSee also

EnvDTE80.DTE2
Adición de comandos de Visual Studio a una página de inicioAdding Visual Studio commands to a Start Page