Tutorial: Guardar configuración de usuario en una página de inicioWalkthrough: Saving 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. Si sigue este tutorial, puede crear un control que 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 cargue 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. Dado que la plantilla de proyecto de la página de inicio incluye un control de usuario personalizable y el XAML de la página de inicio predeterminada llama a ese control, no es necesario que modificar la página de inicio propio.Because the Start Page project template includes a customizable user control, and the default Start Page XAML calls that control, you do not 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\ NombreDeColecciónThe 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 is 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\nombreDeColección.When it is 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 opciones y configuración de usuario de extensión.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 Extension Manager.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. Crear 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 Creating 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 principal del control y, a continuación, presione SUPR.In the design pane, click the main area of the control, and then press DELETE.

    Esto quita la Border elemento y todos los elementos de la base de datos y deja solo el nivel superior Grid elemento.This 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, TextBoxy un botón a la StackPanel.Now drag a TextBlock, a TextBox, and a Button to the StackPanel.

  8. Agregar un x: Name de 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 usuarioImplementing the User Control

Para implementar el control de usuarioTo implement the user control

  1. En el panel 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.

    Esto abre MyControl.xaml.cs y crea un controlador de código auxiliar para el Button_Click eventos.This 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;  
        }  
    }  
    

    Esta propiedad obtiene primero 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, utiliza la propiedad 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 is 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;  
    }  
    

    Esto establece el texto del cuadro de texto en el valor actual de "MySetting".This 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.

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

  9. Generar StartPage.xaml.Build StartPage.xaml.

Probar el controlTesting 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 la 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 la Personalizar página principal lista, seleccione [extensión instalado] 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 la vista menú, haga clic en página de inicio.Close the Start Page if it is 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" por 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" debe mostrarse en el cuadro de texto, aunque no se ha guardado la configuración.The word "Dog" should be displayed in the text box, even though the setting was not saved. Esto sucede porque Visual Studio realiza las ventanas de herramientas en la memoria, incluso si están cerrados, hasta que se cierre Visual Studio.This happens because Visual Studio keeps tool windows in memory, even if they are closed, until Visual Studio itself is closed.

  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 re-open 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 y cuando utilice otro propertyName parámetro para cada llamada a SetString, los valores no sobrescribirán entre sí en el registro.As long as you use a different propertyName parameter for each call to SetString, the values will not 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