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
© 1997 - - La Güeb de Joaquín | |||||
Joaquín Medina Serrano
|
|||||
|
Codificación | |
Fecha de creación | |
Última actualización | |
![]() |