none
llamar clase desde evento load RRS feed

  • Pregunta

  • uenas tardes 

    si me podrian ayudar, tenngo un codigo que es para mover y poner sombra a un form, lo puse en una clase.

    lo que quiero es saber como puedo llamar a esa clase al formulario y que haga los efectos 

    muchas gracias


    jhonatan

    lunes, 5 de noviembre de 2018 19:35

Respuestas

  • Hola jhonatan 

    Lo que necesitas hacer no es cargar la clase en el evento load, eso solo es instanciar tu clase y no sirve para lo que quieres, lo que tu necesitas es que tu formulario herede de tu clase Shadow, para ellos solo tienes que usar la palabra reservada inherits, es decir algo así:

    Public Class Form2
    'acá le dices que Form2 herada de Shadow, es decir
    'que ahora form2 "tendrá las mismas cosas que shadow"
        Inherits Shadow
    
    End Class

    Todo los formularios heredan de clase Form (System.Windows.Forms.Form) en tu caso ya no heredarán de esa clase sino de Shadow que fue la que creaste (valga la aclaración de que tu clase Shadow hereda de System.Windows.Form)

    Lo que quieres implementar se llaman: Formularios heredados

    También asegúrate de incluir el "Inherits Shadow" en el archivo de diseño de los formularios que heredarán de esta clase, cualquier duda nos avisas.

    lunes, 5 de noviembre de 2018 20:27

Todas las respuestas

  • Precisamente en el load de tu formulario de inicio debes llamar a la función que te dará el formato del formulario, ej:

    suponiendo que Form1 es el formulario de arranque y  que formatoAform es la función que hará el sombreado y demás, la cual existe dentro del proyecto, entonces:

    Public Class Form1

       Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            formatoAform()
        End Sub

    End Class

    Ahora que si como dices, las funciones están en una clase y son varias entonces debes llamar a todas las funciones que quieras ejecutar en el load y no solo formatoAform, también cuida que las hayas definido como funciones o métodos públicos en tu clase, eJ (de un metodo publico):

        Public Sub muestra_PB()
            Form1.Panel_botones.Location = New Point(20, 90)
            Form1.Panel_botones.Size = New Size(240, 280)
            Form1.Panel_botones.Visible = True

        End Sub

    Si la clase esta fuera de tu proyecto y la quieres usar debería ser mediante WebService o DLL

    Si es lo que buscabas marcar como respuesta 

    Saludos


    • Editado gasgdl lunes, 5 de noviembre de 2018 20:02
    lunes, 5 de noviembre de 2018 19:53
  • Imports System.Data.OleDb
    Imports System.Drawing.Drawing2D
    Imports System.Net

    Public Class Shadow
        Inherits Form
        Public CS_DROPSHADOW As Int32 = &H20000

        Protected Overrides ReadOnly Property CreateParams() As System.Windows.Forms.CreateParams
            Get
                Dim parameters As CreateParams = MyBase.CreateParams
                parameters.ClassStyle += CS_DROPSHADOW
                Return parameters
            End Get

        End Property

        Public Enum ShadowPosition As Integer
            TopLeft = 10
            TopRight = 50
            BottomLeft = 50
            BottomRight = 50
        End Enum



        Private MoveMouseDown As Boolean
        Private MoveX As Single

        Private MoveY As Single

        Private Sub formNote1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseDown

            MoveMouseDown = True

            MoveX = e.X

            MoveY = e.Y

        End Sub

        Private Sub formNote1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseMove

            If MoveMouseDown Then

                Me.Left = Me.Left + (e.X - MoveX)

                Me.Top = Me.Top + (e.Y - MoveY)

            End If

        End Sub

        Private Sub FormNote1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseUp

            MoveMouseDown = False

        End Sub
    End Class

    ' este es mi codigo que lo puse en una clase

    como haria para llamarlo?


    jhonatan

    lunes, 5 de noviembre de 2018 19:57
  • Hola jhonatan 

    Lo que necesitas hacer no es cargar la clase en el evento load, eso solo es instanciar tu clase y no sirve para lo que quieres, lo que tu necesitas es que tu formulario herede de tu clase Shadow, para ellos solo tienes que usar la palabra reservada inherits, es decir algo así:

    Public Class Form2
    'acá le dices que Form2 herada de Shadow, es decir
    'que ahora form2 "tendrá las mismas cosas que shadow"
        Inherits Shadow
    
    End Class

    Todo los formularios heredan de clase Form (System.Windows.Forms.Form) en tu caso ya no heredarán de esa clase sino de Shadow que fue la que creaste (valga la aclaración de que tu clase Shadow hereda de System.Windows.Form)

    Lo que quieres implementar se llaman: Formularios heredados

    También asegúrate de incluir el "Inherits Shadow" en el archivo de diseño de los formularios que heredarán de esta clase, cualquier duda nos avisas.

    lunes, 5 de noviembre de 2018 20:27