Wpf - Clase Settings personalizada

Descripción general

En este documento figura una clase personalizada que hereda de System.Configuration.ApplicationSettingsBase

Usando código administrado, puedes crear una nueva opción de configuración de la aplicación y enlazarla a las propiedades o a los controles del formulario para que esta opción de configuración se cargue y se guarde automáticamente en tiempo de ejecución.

En este documento se muestra una clase de ese tipo que esta abundantemente documentada

Esta clase debe copiarse en el proyecto donde va a ser usada

'   /**
'   ---------------------------------------------
'   [- (A) Contenido -]
'   ---------------------------------------------
'   [- Versión                 -] = 17.01.30.1151
'   [- Class Name              -] = MyUserSettings
'   [- Descripción             -] = 
'   Clase de configuración 'Settings' personalizada
'   En este tema se describe cómo crear y almacenar los datos de configuración tanto de la aplicación como de sus usuarios.
'   ---------------
#Region "Observaciones"
'   [- Observaciones           -] = 
'    How to: Create Application Settings
'    https://msdn.microsoft.com/es-es/library/ms171565(v=vs.110).aspx
'    Usando código administrado, puede crear una nueva opción de configuración de la aplicación y 
'    enlazarla a las propiedades o a los controles del formulario para que esta opción de configuración 
'     se cargue y se guarde automáticamente en tiempo de ejecución. 
'    
'     Cree una instancia de esta clase contenedora en la aplicación.
'     Normalmente será un miembro privado del formulario principal. 
'     Ahora que ha definido la clase, necesita enlazarla a una propiedad; en este caso,
'     la propiedad BackColor del formulario.  
'     Puede hacerlo en el controlador de eventos Load del formulario. 
'    
'    Dim Mus As MyUserSettings
'    
'    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'        Mus = New MyUserSettings()
'        Mus.BackgroundColor = Color.AliceBlue
'        Me.DataBindings.Add(New Binding("BackColor", Mus, "BackgroundColor"))
'    End Sub
'    
'     Si proporciona una manera de cambiar la configuración en tiempo de ejecución,  
'     tendrá que guardar la configuración actual del usuario en el disco cuando 
'     el formulario se cierre o los cambios se perderán. 
'    
'    Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
'        Mus.Save()
'    End Sub
#End Region
'   ---------------
#Region "Bibliografía"
'   [- Bibliografía            -] = 
'   * Introducción a la configuración de la aplicación
'     https://msdn.microsoft.com/es-es/library/k4s6c3a0(v=vs.110).aspx
'   * Application Settings Architecture
'     https://msdn.microsoft.com/es-es/library/8eyb2ct1(v=vs.110).aspx
'   * Application Settings Attributes
'     https://msdn.microsoft.com/es-es/library/ms171564(v=vs.110).aspx
'   * Application Settings for Custom Controls
'     https://msdn.microsoft.com/es-es/library/6a0381s6(v=vs.110).aspx
'   * Using Application Settings and User Settings
'     https://msdn.microsoft.com/es-es/library/bb397750(v=vs.110).aspx
'   * How to: Create Application Settings
'     https://msdn.microsoft.com/es-es/library/ms171565(v=vs.110).aspx
'   * How to: Validate Application Settings
'     https://msdn.microsoft.com/es-es/library/z76x4k8b(v=vs.110).aspx
#End Region
' ---------------
#Region "Código de ejemplo"
'
'   [- Código de ejemplo       -] = 
' ----------------------------------------------
'
'#Region "Funciones para Guardar / leer datos en fichero Settings [Versión - 2017-01-30]"
'
'    ' Clase que hereda los valores que he definido en settings
'    ' concretamente en la clase [MyUserSettings] que tiene que copiarse en este proyecto
'    ' observa que no hace nada de nada, solo se instancia de forma privada
'    ' para que el formulario tenga su propio juego de valores
'    Private Class localVentanaSettings
'        Inherits MyUserSettings
'
'        Public Sub New()
'            ' no hacer nada
'        End Sub
'    End Class
'
'    '----------------------------------------------------------
'    Friend Sub GuardarDatosVentanaEnSettings()
'        ' ---------------------------------------------------
'        Try
'            '-----------------------------------
'            ' instanciar la clase privada [Settings]
'            Dim lvs As New localVentanaSettings()
'            '---------------------------------------
'            ' Posición del Form
'            '---------------------------------------
'            ' Guardar datos en Settings en la configuración
'            ' Si el formulario no está en modo normal
'            ' guardar los datos de la posición que tenía
'            ' antes de minimizar o maximizar
'            '---------------------------------------
'            If Me.WindowState <> WindowState.Normal Then
'                lvs.WindowLeft = Me.RestoreBounds.Left
'                lvs.WindowTop = Me.RestoreBounds.Top
'            Else
'                lvs.WindowLeft = Me.Left
'                lvs.WindowTop = Me.Top
'                lvs.WindowWidth = Me.Width
'                lvs.WindowHeight = Me.Height
'            End If
'            ' -------------------------------------------
'            ' Estado TopMost
'            lvs.WindowTopMost = Me.Topmost
'            ' -------------------------------------------
'            ' Otras variables del form
'            lvs.WindowState = Me.WindowState
'            '---------------------------------
'            ' Guardar los datos
'            lvs.Save()
'        Catch ex As Exception
'            Throw
'        End Try
'        ' / FIN  guardar los datos en la configuración
'        ' ---------------------------------------------------
'    End Sub
'
'
'    Friend Sub LeerDatosVentanaDeSettings()
'        Try
'            '-----------------------------------
'            ' instanciar la clase privada [Settings]
'            Dim lvs As New localVentanaSettings()
'            '--------------------------------------
'            ' Posición del Form
'            If Convert.ToInt32(lvs.WindowLeft) > 0D Then
'                If Me.WindowStartupLocation <> WindowStartupLocation.CenterOwner Then
'                    'si el formulario se lanza [CenterOwner], me interesa que se centre, pero
'                    ' también me interesa que recuerde el tamaño que tenia la ultima vez que se cerro
'                    ' de esta forma, evito que la posición guardada del formulario lo mueva a otro sitio
'                    Me.Left = lvs.WindowLeft
'                    Me.Top = lvs.WindowTop
'                End If
'                Me.Width = lvs.WindowWidth
'                Me.Height = lvs.WindowHeight
'            End If
'            ' -------------------------------------------
'            ' Estado TopMost
'            Me.Topmost = lvs.WindowTopMost
'            'Me.MenuVentanaSiempreVisible.IsChecked = My.Settings.MainWindow_TopMost
'            Me.WindowState = lvs.WindowState
'            ' -------------------------------------------
'            ' Otras variables del form
'        Catch ex As Exception
'            Throw
'        End Try
'        ' / FIN  Leer los datos de la configuración
'        ' ---------------------------------------------------
'    End Sub
'
'#End Region
'
#End Region
'   ---------------------------------------------
'   [- (B) Información básica -]
'   ---------------------------------------------
'   [- Module Name             -] = Turno2017Merche.txt
'   [- Propietario             -] = AGUILA10\Admin
'   [- Lenguaje                -] = es-ES (Español - España)
'   [- Type                    -] = Text Document
'   [- Size                    -] = 0 KB
'   ---------------
'   [- Fecha de creación       -] = 2017/01/30
'   [- Último acceso           -] = 2017/01/30
'   [- Última modificación     -] = 2017/01/30
'   ---------------
'   [- Creada inicialmente en  -] = WpfDocumentadorClases2017
'   [- Versión de la plantilla -] = 2017/01/16
'   ---------------
'   [- NET Framework Release   -] = Release: 4.6.1 o posterior
'   [- NET Framework Versión   -] = Versión: 4.0.30319.42000
'   ---------------
'   [- Generador Nombre        -] = WpfDocumentadorClases2017
'   [- Generador Versión       -] = 17.01.28.1825
'   ---------------------------------------------
'   [- (C) Propiedad intelectual -]
'   ---------------------------------------------
'   [- Autor Nombre            -] = Joaquin Medina Serrano
'   [- Autor CorreoE           -] = mailto:administrador@joaquin.medina.name
'   [- Copyright               -] = 
'   Esta obra está bajo una licencia de Creative Commons Atribución-NoComercial-SinDerivar 4.0 Internacional. 
'   Se puede consultar una copia  de la licencia http://creativecommons.org/licenses/by-nc-nd/4.0/
'   ---------------------------------------------
'   [- (D) Revisiones -]
'   ---------------------------------------------
'   [- Historial de revisiones -] = 
'    - 2017/01/27 - Creación
'    - 2017/01/30 - Cambio el código de el ejemplo de la forma de uso
'   ---------------------------------------------
'   [- /Eof -]
'   */

Option Explicit On
Option Strict On
Option Infer Off
Option Compare Binary


''' <summary>
'''  Clase de configuración 'Settings' personalizada
''' </summary>
Public Class MyUserSettings
    Inherits System.Configuration.ApplicationSettingsBase

#Region "Información"
    '------------------------------------------------
    'Apunte táctico
    '------------------------------------------------
    '* Application Settings Attributes
    '  https://msdn.microsoft.com/es-es/library/ms171564(v=vs.110).aspx
    '* ApplicationScopedSettingAttribute 
    '  Define una propiedad como configuración de la aplicación de ámbito de aplicación. 
    '* UserScopedSetting
    '  Define una propiedad como configuración de la aplicación de ámbito de usuario. 
    '* DefaultSettingValue
    '  Especifica una cadena que se puede deserializar por el proveedor en el valor predeterminado asignado para esta propiedad. 
    '  LocalFileSettingsProvider no necesita este atributo y reemplazará cualquier valor proporcionado por este atributo si ya existe un valor guardado. 
    '* SettingsDescriptionAttribute 
    '  Está diseñada para ayudar a herramientas en tiempo de diseño y herramientas administrativas de tiempo de ejecución en la identificación y descripción de la propiedad de configuración asociada.
    '  Este atributo es opcional y solo pueden aplicarse en el nivel de propiedad de configuración individuales.
    '------------------------------------------------
#End Region

#Region "Variables y propiedades de la clase"

    <System.Configuration.UserScopedSetting()>
    <System.Configuration.SettingsDescriptionAttribute("Valor de la propiedad [Left] del formulario ")>
    <System.Configuration.DefaultSettingValue("0")>
    Public Property WindowLeft As Double
        Get
            WindowLeft = Convert.ToDouble(Me("WindowLeft"))
        End Get
        Set(ByVal value As Double)
            Me("WindowLeft") = value
        End Set
    End Property

    <System.Configuration.UserScopedSetting()>
    <System.Configuration.DefaultSettingValue("0")>
    <System.Configuration.SettingsDescriptionAttribute("Valor de la propiedad [Top] del formulario ")>
    Public Property WindowTop As Double
        Get
            WindowTop = Convert.ToDouble(Me("WindowTop"))
        End Get
        Set(ByVal value As Double)
            Me("WindowTop") = value
        End Set
    End Property

    <System.Configuration.UserScopedSetting()>
    <System.Configuration.DefaultSettingValue("0")>
    <System.Configuration.SettingsDescriptionAttribute("Valor de la propiedad [Width] del formulario ")>
    Public Property WindowWidth As Double
        Get
            WindowWidth = Convert.ToDouble(Me("WindowWidth"))
        End Get
        Set(ByVal value As Double)
            Me("WindowWidth") = value
        End Set
    End Property

    <System.Configuration.UserScopedSetting()>
    <System.Configuration.DefaultSettingValue("0")>
    <System.Configuration.SettingsDescriptionAttribute("Valor de la propiedad [Height] del formulario ")>
    Public Property WindowHeight As Double
        Get
            WindowHeight = Convert.ToDouble(Me("WindowHeight"))
        End Get
        Set(ByVal value As Double)
            Me("WindowHeight") = value
        End Set
    End Property

    <System.Configuration.UserScopedSetting()>
    <System.Configuration.DefaultSettingValue("False")>
    <System.Configuration.SettingsDescriptionAttribute("Valor de la propiedad [TopMost] del formulario ")>
    Public Property WindowTopMost As Boolean
        Get
            WindowTopMost = Convert.ToBoolean(Me("WindowTopMost"))
        End Get
        Set(ByVal value As Boolean)
            Me("WindowTopMost") = value
        End Set
    End Property

    <System.Configuration.UserScopedSetting()>
    <System.Configuration.DefaultSettingValue("System.Windows.Media.Colors")>
    <System.Configuration.SettingsDescriptionAttribute("Valor de la propiedad [Background] del formulario ")>
    Public Property WindowBackgroundColor() As System.Windows.Media.Colors
        Get
            WindowBackgroundColor = CType(Me("WindowBackgroundColor"), System.Windows.Media.Colors)
        End Get
        Set(ByVal value As System.Windows.Media.Colors)
            Me("WindowBackgroundColor") = value
        End Set
    End Property


    <System.Configuration.UserScopedSetting()>
    <System.Configuration.DefaultSettingValue("Normal")>
    <System.Configuration.SettingsDescriptionAttribute("Valor de la propiedad [WindowState] del formulario ")>
    Public Property WindowState() As System.Windows.WindowState
        Get
            WindowState = CType(Me("WindowState"), System.Windows.WindowState)
        End Get
        Set(ByVal value As System.Windows.WindowState)
            Me("WindowState") = value
        End Set
    End Property

#End Region

End Class

↑↑↑

A.2.Enlaces

[Para saber mas]
[Grupo de documentos]
[Grupo de documentos Index]
[Documento Index]
[Documento Start]
[Imprimir el Documento]
© 1997 - - La Güeb de Joaquín
Joaquín Medina Serrano
Ésta página es española

Codificación
Fecha de creación
Última actualización
[HTML5 Desarrollado usando CSS3]