WPF - Guardar / leer datos en fichero [Settings personalizado]

Descripción general

Ejemplo que muestra como se puede usar un objeto [Settings personalizado] para guardar información del formulario, como por ejemplo tu tamaño. Los datos se guardan en un objeto [Settings personalizado] cuando se cierra el formulario ( o la ventana wpf), y se recuperan cuando se vuelve a mostrar

Lo único destacable del código es que se declara una clase privada que hereda de la clase personalizada Settings que hemos escrito, el motivo de hacer este paso es que el formulario tenga su propia clase de Settings donde guardar su información. Si no se hace así, todos los formularios grabarían su información en el mismo fichero, sobrescribiendo cada uno los valores del anterior.

Puedes encontrar el código de la clase [Settings personalizada] aquí: [Wpf Clase personalizada MySettyngs.txt]

El código para copiar y pegar en la ventana Wpf (o bien formulario) es el siguiente:

#Region " Guardar / leer datos en Fichero Settings [Versión - 2017-01-30]"

#Region "Eventos Load / Closing  [Versión - 2017-01-30]"

    Private Sub MainWindow_Initialized(sender As Object, e As System.EventArgs) Handles Me.Initialized
        '---------------------------------------------------------
        ' Otras inicializaciones
        '---------------------------------------------------------
        ' Leer datos del fichero Ini
        Call LeerDatosVentanaDeSettings()
    End Sub


    Private Sub MainWindow_Closing(sender As Object, e As System.ComponentModel.CancelEventArgs) Handles Me.Closing
        '---------------------------------------------------------
        ' grabar datos en el fichero Ini
        Call GuardarDatosVentanaEnSettings()
        '---------------------------------------------------------
        ' destruir los objetos internos empleados en este form
        '-----------------------------------------------------
        '
    End Sub

#End Region

#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

↑↑↑

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]