Pequeño apunte que muestra el código para grabar / leer información en el fichero Ini
Código para copiar y pegar en la ventana de código del formulario.
#Region " Guardar / leer datos en Fichero Ini [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 LeerDatosVentanaDeIni() End Sub Private Sub MainWindow_Closing(sender As Object, e As System.ComponentModel.CancelEventArgs) Handles Me.Closing '--------------------------------------------------------- ' grabar datos en el fichero Ini Call GuardarDatosVentanaEnIni() '--------------------------------------------------------- ' destruir los objetos internos empleados en este form '----------------------------------------------------- ' End Sub #End Region #Region "Funciones para Guardar / leer datos en fichero Ini [Versión - 2017-01-30]" '------------------------------------------------ ' Apunte táctico '----------------------------------------------- ' el nombre del ensamblado --> System.Reflection.MethodBase.GetCurrentMethod.Module.Name ' el nombre de la clase -----> System.Reflection.MethodBase.GetCurrentMethod.DeclaringType.Name ' el nombre de la función ---> System.Reflection.MethodBase.GetCurrentMethod.Name '---------------------------------------------------------- ''' <summary> ''' Lee (de un fichero tipo Ini) los valores (left, top, width, Height) de la ventana ''' </summary> Private Sub LeerDatosVentanaDeIni() Try ' Obtener el nombre del ensamblado (sin extension) como nombre de fichero INI ' Dim EnsambladoConExtension As String = System.Reflection.MethodBase.GetCurrentMethod.Module.Name Dim SoloNombreEnsambladoSinExtension As String = System.IO.Path.GetFileNameWithoutExtension(System.Reflection.MethodBase.GetCurrentMethod.Module.Name) ' Obtener el nombre de la clase que sera el nombre de la sección. ' La Sección de los valores INI que en este caso es el nombre de la clase Dim SeccionIni As String = System.Reflection.MethodBase.GetCurrentMethod.DeclaringType.Name ' --------------------------------------- ' Instanciar el objeto que maneja el fichero Ini ' Observaciones: ' - Si el fichero no existe se crea ' - El fichero Ini se crea el directorio [ruta del ensamblado /DatosPrograma/ version 4 cifras] ' - El nombre es: [Nombre del ensamblado (sin extension) + extension INI] ' --------------------------------------- Using objIni As New Util.Ini.IniFile(SoloNombreEnsambladoSinExtension) '-------------------------------------- ' Posición del Form If objIni.GetDouble(SeccionIni, "Left", 0D) > 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 = objIni.GetDouble(SeccionIni, "Left", 0D) Me.Top = objIni.GetDouble(SeccionIni, "Top", 0D) End If Me.Width = objIni.GetDouble(SeccionIni, "Width", 0D) Me.Height = objIni.GetDouble(SeccionIni, "Height", 0D) End If ' ---------------- ' Estado TopMost Me.Topmost = objIni.GetBoolean(SeccionIni, "Topmost", False) 'Me.MenuVentanaSiempreVisible.IsChecked = My.Settings.MainWindow_TopMost ' ---------------- ' WindowState ' ¡¡ Bug 2017/01/30 !! Problemas al leer. ' CType, espera recibir un numero para hacer la conversion de la enumeración System.Windows.WindowStat Me.WindowState = CType(objIni.GetInt32(SeccionIni, "WindowState", 0), System.Windows.WindowState) ' ------------------------------------------- ' Otras variables del form ' ' ' End Using Catch ex As Exception Using sw As New System.IO.StringWriter sw.WriteLine("---") sw.WriteLine("Ocurrió durante el proceso de Lectura de datos de 'INI' ") sw.WriteLine(ex.Message) sw.WriteLine(" /Eof") sw.Flush() ' relanzar el error Throw New Exception(sw.ToString, ex) End Using End Try ' / FIN Leer los datos de la configuración ' --------------------------------------------------- End Sub '---------------------------------------------------------- ''' <summary> ''' Guarda (en un fichero tipo Ini) los valores (left, top, width, Height) de la ventana ''' </summary> Private Sub GuardarDatosVentanaEnIni() ' --------------------------------------------------- Try ' Obtener el nombre del ensamblado (sin extension) para usarlo como nombre de fichero INI ' Dim EnsambladoConExtension As String = System.Reflection.MethodBase.GetCurrentMethod.Module.Name Dim SoloNombreEnsambladoSinExtension As String = System.IO.Path.GetFileNameWithoutExtension(System.Reflection.MethodBase.GetCurrentMethod.Module.Name) ' Obtener el nombre de la clase que sera el nombre de la sección. ' La Sección de los valores INI que en este caso es el nombre de la clase Dim Seccion As String = System.Reflection.MethodBase.GetCurrentMethod.DeclaringType.Name ' --------------------------------------- ' Instanciar el objeto que maneja el fichero Ini ' Observaciones: ' - Si el fichero no existe se crea ' - El fichero Ini se crea el directorio [ruta del ensamblado /DatosPrograma/ version 4 cifras] ' - El nombre es: [Nombre del ensamblado (sin extension) + extension INI] ' --------------------------------------- Using objIni As New Util.Ini.IniFile(SoloNombreEnsambladoSinExtension) '--------------------------------------- ' Posición del Form '--------------------------------------- '--------------------------------------- If Me.WindowState = WindowState.Normal Then ' El form está en posición normal, guardar todos los datos objIni.WriteValue(Seccion, "Left", Me.Left) objIni.WriteValue(Seccion, "Top", Me.Top) objIni.WriteValue(Seccion, "Width", Me.Width) objIni.WriteValue(Seccion, "Height", Me.Height) Else ' Si el formulario no está en modo normal ' es decir, esta minimizado, o maximizado, ' guardar los datos de la posición que tenía ' antes de minimizar o maximizar objIni.WriteValue(Seccion, "Left", Me.RestoreBounds.Left) objIni.WriteValue(Seccion, "Top", Me.RestoreBounds.Top) objIni.WriteValue(Seccion, "Width", Me.RestoreBounds.Width) objIni.WriteValue(Seccion, "Height", Me.RestoreBounds.Height) End If ' ------------------------------------------- ' Estado TopMost objIni.WriteValue(Seccion, "Topmost", Me.Topmost) 'Me.MenuVentanaSiempreVisible.IsChecked = My.Settings.MainWindow_TopMost ' --------------- ' WindowState objIni.WriteValue(Seccion, "WindowState", Me.WindowState.ToString) ' ------------------------------------------- ' Otras variables del form ' ' ' ------------------------------------------- objIni.Flush() End Using Catch ex As Exception Using sw As New System.IO.StringWriter sw.WriteLine("---") sw.WriteLine("Ocurrió durante el proceso de escritura de datos de 'INI' ") sw.WriteLine(ex.Message) sw.WriteLine(" /Eof") sw.Flush() ' relanzar el error Throw New Exception(sw.ToString, ex) End Using End Try ' / FIN guardar los datos en la configuración ' --------------------------------------------------- End Sub #End Region #End Region
© 1997 - - La Güeb de Joaquín | |||||
Joaquín Medina Serrano
|
|||||
|
Codificación | |
Fecha de creación | |
Última actualización | |
![]() |