La Web del Programador: Comunidad de Programadores
 
    Pregunta:  54202 - OBJETOS CTL
Autor:  Lino Palmero
Quiero utilizar un UserControl para que el usuario lo pueda mover por la pantalla y que al cerrar y volver abrir lapalicación conserve su ultima posicion.
Alguien sabe si es posible grabar la nueva posición de un UserControl utilizando las" WriteProperties(PropBag As PropertyBag) " en tiempo de ejecución?.

  Respuesta:  Carlos Piña
Hola. En realidad las propiedades Left y Top de los controles de usuario no se pueden manejar dentro del mismo control, tienes que manipularlas desde el código del formulario donde lo coloques.

Lo que puedes hacer es usar las funciones SaveSetting y GetSetting en los eventos Load y Unload del formulario.

Por ejemplo, para guardar la posición del control, en el evento Unload colocas este código:

SaveSetting App.EXEName, Name, "Left", NombreControl.Left
SaveSetting App.EXEName, Name, "Top", NombreControl.Top

Y para recuperar la posición colocas este otro en el evento Load:

NombreControl.Left = GetSetting(App.EXEName, Name, "Left", ValorPorDefecto)
NombreControl.Top = GetSetting(App.EXEName, Name, "Top", ValorPorDefecto)

Cuando se carga el formulario el control toma en Left y en Top el ValorPorDefecto. Luego en la descarga se guardan los nuevos valores de Left y Top del control para ser recuperados la próxima vez que inicies el programa. Espero que te sirva. Saludos.