Creacion de Controles Personalizados con VB'Net - PowerPoint PPT Presentation

1 / 28
About This Presentation
Title:

Creacion de Controles Personalizados con VB'Net

Description:

Crearemos un control creado por nosotros mismos a partir del ... MyBase.Cursor = Cursors.SizeAll. End If. End Sub. Private Sub MSNetSVEtiquetaMovil_MouseUp ... – PowerPoint PPT presentation

Number of Views:272
Avg rating:3.0/5.0
Slides: 29
Provided by: guanaco
Category:

less

Transcript and Presenter's Notes

Title: Creacion de Controles Personalizados con VB'Net


1
Creacion de Controles Personalizados con VB.Net
  • Jorge Barrientos
  • Jorge.barrientos_at_gmail.com

2
La pregunta?
  • La pregunta siempre es la misma, como puedo crear
    mis propios controles?

3
Control propuesto
  • Crearemos un control label que pueda moverse en
    tiempo de ejecucion.

4
Control Label Reubicable
  • Crearemos un control creado por nosotros mismos a
    partir del control Label que viene integrado en
    el .Net Framework.

5
Control Label Reubicable
  • Tambien crearemos una aplicacion para probar
    nuestro control personalizado.

6
Control Label Reubicable
  • Especificaciones
  • Primero, se requiere toda la funcionalidad que un
    control Label ofrece. Lo que adicionaremos es la
    habilidad para poder moverlo en tiempo de
    ejecucion.
  • Regla No. 1, si ya existe un control que posee
    mas funcionalidad de la que necesita, herede de
    este.

7
Control Label Reubicable
  • Especificaciones
  • Necesitamos mover nuestro control Label cuando el
    boton del raton este presionado sobre el.
  • Necesitamos algun tipo de indicador para mostrar
    que nuestro control se puede mover cuando el
    cursor este sobre el.
  • Tambien necesitamos cambiar el cursor cuando el
    cursor se encuentre sobre nuestro control para
    indicar que se esta en modo movimiento.

8
Control Label Reubicable
  • Lo primero en nuestra lista es obtener toda la
    funcionalidad de un control Label normal dentro
    de nuestro control al que bautizaremos con el
    nombre de MSNetSVEtiquetaMovil.

9
Control MSNetSVEtiquetaMovil
  • Para comenzar crearemos un nuevo proyecto
    Windows Control Library, y lo llamaremos
    Libreria de Controles Moviles MSNetSV.
  • Cambiamos el nombre a la clase Class1.vb a
    MSNetSVEtiquetaMovil.vb

10
Control MSNetSVEtiquetaMovil
  • Con lo anterior tenemos nuestra libreria para
    controles moviles en tiempo de ejecucion.
  • Si se desean desarrollar mas controles bastaria
    con agregar nuevas clases a esta libreria.

11
Control MSNetSVEtiquetaMovil
  • Antes de comenzar a trabajar con el codigo
    necesitamos importar un par de cosas, ya que
    estamos trabajando con controles para formularios
    Windows, .
  • El namespace System.Windows.Forms, el cual nos da
    acceso al control estandar Label.

12
Control MSNetSVEtiquetaMovil
  • Ademas para obtener las coordenadas del mouse
    pasadas como parametros en los eventos de este,
    pasaran como una estructura Point. Asi que se
    necesitara el namespace System.Drawing para tener
    acceso a la estructura Point.

13
Control MSNetSVEtiquetaMovil
  • Con las referencias hechas, solamente necesitamos
    cambiar un poco el codigo para importar los
    namespaces que estos dos archivos exponen, e
    indicarle a nuestro control de donde heredara sus
    caracteristicas iniciales.

14
Control MSNetSVEtiquetaMovil
  • Imports System.Windows.Forms
  • Imports System.Drawing
  • Public Class MSNetSVEtiquetaMovil
  • Inherits System.Windows.Forms.Label
  • End Class

15
Control MSNetSVEtiquetaMovil
  • Con esto tenemos una clase que hace exactamente
    lo mismo que un control Label normal.

16
Control MSNetSVEtiquetaMovil
  • Sin embargo no puede ser ejecutado, si se
    presiona F5 para ejecutar el proyecto nos lanzara
    una excepcion.

17
Control MSNetSVEtiquetaMovil
  • Debido a lo anterior adicionaremos un proyecto
    para poder probar nuestro poderoso control.

18
Control MSNetSVEtiquetaMovil
  • Agregamos un nuevo proyecto VB.Net Windows
    Application y lo llamaremos Prueba Controles
    Moviles.

19
Control MSNetSVEtiquetaMovil
  • Nuestro control debe dar algun tipo de indicacion
    al usuario. Debido a que nuestro control tiene
    dos estados Estatico y Movil, debemos
    indicarle al usuario en que estado esta nuestro
    control.

20
Control MSNetSVEtiquetaMovil
  • MODO MOVIL
  • Es aca donde empieza a escribirse codigo.
  • Necesitamos agregar soporte a nuestro control
    para cambiar el cursor cuando el boton izquierdo
    es presionado en nuestro control, y necesitamos
    restaurarlo una vez se deje de presionar el boton
    del mouse.

21
Control MSNetSVEtiquetaMovil
  • Esto es facil de manejar debido a que el control
    Label ya posee dos eventos MouseDown y MouseUp.

22
Control MSNetSVEtiquetaMovil
  • Para controlar nuestro cursor adicionaremos un
    atributo a nuestra clase.
  • Private _MiCursor As Cursor
  • Public ReadOnly Property MiCursor() As Cursor
  • Get
  • Return Me._MiCursor
  • End Get
  • End Property

23
Control MSNetSVEtiquetaMovil
  • Ahora agregaremos codigo para controlar nuestro
    atributo para manejar el estado del cursor.

24
Control MSNetSVEtiquetaMovil
Private Sub MSNetSVEtiquetaMovil_MouseDown( _
ByVal sender As Object, _ ByVal e As
System.Windows.Forms.MouseEventArgs) Handles
Me.MouseDown If (e.Button
Windows.Forms.MouseButtons.Left) Then
Me._MiCursor MyBase.Cursor
MyBase.Cursor Cursors.SizeAll End
If End Sub Private Sub MSNetSVEtiquetaMovil_Mouse
Up( _ ByVal sender As Object, ByVal e As _
System.Windows.Forms.MouseEventArgs) _ Handles
Me.MouseUp MyBase.Cursor
Me.MiCursor End Sub
25
Control MSNetSVEtiquetaMovil
Private _PosicionRelativaDeCursor As Point
Private _Moviendo As Boolean
26
Control MSNetSVEtiquetaMovil
Private Sub MSNetSVEtiquetaMovil_MouseDown( _
ByVal sender As Object, _ ByVal e As
System.Windows.Forms.MouseEventArgs) _
Handles Me.MouseDown If (e.Button
Windows.Forms.MouseButtons.Left) Then
Me._MiCursor MyBase.Cursor
MyBase.Cursor Cursors.SizeAll '
Me._PosicionRelativaDeCursor
e.Location Me._Moviendo True
End If End Sub
27
Control MSNetSVEtiquetaMovil
Private Sub MSNetSVEtiquetaMovil_MouseUp( _
ByVal sender As Object, _ ByVal e As
System.Windows.Forms.MouseEventArgs) _
Handles Me.MouseUp _Moviendo False
MyBase.Cursor Me.MiCursor End Sub
28
Control MSNetSVEtiquetaMovil
Private Sub MSNetSVEtiquetaMovil_MouseMove( _
ByVal sender As Object, _ ByVal e As
System.Windows.Forms.MouseEventArgs) _
Handles Me.MouseMove If (Moviendo) Then
Dim posicionCliente As Point _
MyBase.Parent.PointToClient( _
System.Windows.Forms.Cursor.Position)
Dim ajustarUbicacion As New Point( _
posicionCliente.X - Me._PosicionRelativaDeCursor.X
, _ posicionCliente.Y -
Me._PosicionRelativaDeCursor.Y)
MyBase.Location ajustarUbicacion End
If End Sub
Write a Comment
User Comments (0)
About PowerShow.com