Mostrar/Ocultar

Iniciado por SγиtαxEяяoя, 30 Mayo 2013, 19:01 PM

0 Miembros y 2 Visitantes están viendo este tema.

SγиtαxEяяoя

Hola. me pregunto si hay algun codigo que otorgue la funcion que al pasar el mouse cambie la imagen de un picturebox y que al quitar el mouse vuelva a la imagen anterior


Eleкtro

Usa el evento "MouseEnter" y "MouseLeave", es así de fácil.

Saludos!








z3nth10n

Yo tengo un code:

Código (vbnet) [Seleccionar]
    Private Sub picMini_MouseEnter(sender As Object, e As EventArgs) Handles picMini.MouseEnter
        sender.Image = Mini_Off
    End Sub

    Private Sub picMini_MouseLeave(sender As Object, e As EventArgs) Handles picMini.MouseLeave
        sender.Image = Mini_On
    End Sub


Recuerda poner en el Form load alguna imagen.

Código (vbnet) [Seleccionar]
    Private Sub frmMain_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        picMini.Image = Mini_On 'Aqui se carga la que se va a mostrar por defecto
        picMini.BackColor = Color.Transparent 'Por si tiene transparencias la imagen


Y como supondrás el Mini_Off es un Dim...

Código (vbnet) [Seleccionar]
    Dim Mini_Off As Image = Image.FromFile(".\Art\Buttons\Mini_Off.png")
    Dim Mini_On As Image = Image.FromFile(".\Art\Buttons\Mini_On.png")


Un saludo.

Interesados hablad por Discord.

SγиtαxEяяoя

Aprovecho de una ves... y como hago para no mover el form.. es decir bloquearlo

que cuando se abra no se pueda mover

XresH

La propiedad FormBorderStyle en valor 0 quita el contorno del Formulario, por lo que no se puede mover, es una alternativa rápida, no se si querés algo mas elaborado y mantener los bordes y botones, habría que trabajar sobre algunos eventos cuando detecte movimiento, creo que es Form_Move no me acuerdo bien.


Saludos.
[ - Si eres programador y quieres que tus proyectos esten en mi blog(con o sin source), consúltame! - ]
Entra A Mi Blog De Programación | | Dudas en este post :| | >>Clic para ir al Post<<

Eleкtro

Cita de: SyntaxError404 en 30 Mayo 2013, 21:50 PM
Aprovecho de una ves... y como hago para no mover el form.. es decir bloquearlo

que cuando se abra no se pueda mover

La manera sencilla:

Código (vbnet) [Seleccionar]
    Dim Fixed_Location As Point ' = New Point(X, Y) ' Seteamos el valor por defecto.

    Private Sub Form1_Shown(sender As Object, e As EventArgs) Handles MyBase.Shown
        ' ...O seteamos el valor por defecto cuando la ventana se haya creado.
        Fixed_Location = New Point(Me.Location.X, Me.Location.Y)
    End Sub

    Private Sub Form1_Move(sender As Object, e As EventArgs) Handles MyBase.Move
        If Me.Visible Then Me.Location = Fixed_Location
    End Sub


Después de hacerlo me he encontrado con el problema de que el layer de la ventana se sigue dibujando por la pantalla si se mantiene el botón del mouse para intentar arrastrarlo, es una cosa sin importancia, pero como me gusta la eficacia, al final he buscado la manera de hacerlo usando los mensajes de Windows:

(Este código no es mío)
Código (vbnet) [Seleccionar]
#Region " Cancel Move Form "

    ' Examples:
    ' Me.Moveable = False
    ' Me.Moveable = True

    Private Declare Function EnableMenuItem Lib "user32.dll" Alias "EnableMenuItem" (ByVal hMenu As IntPtr, ByVal uIDEnableItem As Int32, ByVal uEnable As Int32) As Int32

    Private bMoveable As Boolean = True

    Public Overridable Property Moveable() As Boolean
        Get
            Return bMoveable
        End Get
        Set(ByVal Value As Boolean)
            If bMoveable <> Value Then
                bMoveable = Value
            End If
        End Set
    End Property

    Protected Overrides Sub WndProc(ByRef m As Message)

        If m.Msg = &H117& Then
            'Handles popup of system menu.
            If m.LParam.ToInt32 \ 65536 <> 0 Then 'divide by 65536 to get hiword.
                Dim AbleFlags As Int32 = &H0&
                If Not Moveable Then AbleFlags = &H2& Or &H1&
                EnableMenuItem(m.WParam, &HF010&, &H0& Or AbleFlags)
            End If
        End If

        If Not Moveable Then
            'Cancels any attempt to drag the window by it's caption.
            If m.Msg = &HA1 Then If m.WParam.ToInt32 = &H2 Then Return
            'Redundant but cancels any clicks on the Move system menu item.
            If m.Msg = &H112 Then If (m.WParam.ToInt32 And &HFFF0) = &HF010& Then Return
        End If

        'Return control to base message handler.
        MyBase.WndProc(m)

    End Sub

#End Region


Saludos...








XresH

Cita de: EleKtro H@cker en 31 Mayo 2013, 09:24 AM
La manera sencilla:

Código (vbnet) [Seleccionar]
    Dim Fixed_Location As Point ' = New Point(X, Y) ' Seteamos el valor por defecto.

    Private Sub Form1_Shown(sender As Object, e As EventArgs) Handles MyBase.Shown
        ' ...O seteamos el valor por defecto cuando la ventana se haya creado.
        Fixed_Location = New Point(Me.Location.X, Me.Location.Y)
    End Sub

    Private Sub Form1_Move(sender As Object, e As EventArgs) Handles MyBase.Move
        If Me.Visible Then Me.Location = Fixed_Location
    End Sub


Después de hacerlo me he encontrado con el problema de que el layer de la ventana se sigue dibujando por la pantalla si se mantiene el botón del mouse para intentar arrastrarlo, es una cosa sin importancia, pero como me gusta la eficacia, al final he buscado la manera de hacerlo usando los mensajes de Windows:

(Este código no es mío)
Código (vbnet) [Seleccionar]
#Region " Cancel Move Form "

    ' Examples:
    ' Me.Moveable = False
    ' Me.Moveable = True

    Private Declare Function EnableMenuItem Lib "user32.dll" Alias "EnableMenuItem" (ByVal hMenu As IntPtr, ByVal uIDEnableItem As Int32, ByVal uEnable As Int32) As Int32

    Private bMoveable As Boolean = True

    Public Overridable Property Moveable() As Boolean
        Get
            Return bMoveable
        End Get
        Set(ByVal Value As Boolean)
            If bMoveable <> Value Then
                bMoveable = Value
            End If
        End Set
    End Property

    Protected Overrides Sub WndProc(ByRef m As Message)

        If m.Msg = &H117& Then
            'Handles popup of system menu.
            If m.LParam.ToInt32 \ 65536 <> 0 Then 'divide by 65536 to get hiword.
                Dim AbleFlags As Int32 = &H0&
                If Not Moveable Then AbleFlags = &H2& Or &H1&
                EnableMenuItem(m.WParam, &HF010&, &H0& Or AbleFlags)
            End If
        End If

        If Not Moveable Then
            'Cancels any attempt to drag the window by it's caption.
            If m.Msg = &HA1 Then If m.WParam.ToInt32 = &H2 Then Return
            'Redundant but cancels any clicks on the Move system menu item.
            If m.Msg = &H112 Then If (m.WParam.ToInt32 And &HFFF0) = &HF010& Then Return
        End If

        'Return control to base message handler.
        MyBase.WndProc(m)

    End Sub

#End Region


Saludos...

Lo probe y funciona de 10, gracias por el aporte Electro!

Saludos!
[ - Si eres programador y quieres que tus proyectos esten en mi blog(con o sin source), consúltame! - ]
Entra A Mi Blog De Programación | | Dudas en este post :| | >>Clic para ir al Post<<

SγиtαxEяяoя

#7
Tengo otra duda, al seleccionar un Form automaticamente se muestra la barra de tareas :(

como puedo solucionar este problema ??'


Edito:


a lo que me refiero es que estoy en un juego "FullScreen" y al form le di la propiedad de "TopMost" pero al seleccionar algo del form se muestra la barra de tareas.. no se si me explico bien

Eleкtro

#8
Cita de: SyntaxError404 en 31 Mayo 2013, 20:38 PM
Tengo otra duda, al seleccionar un Form automaticamente se muestra la barra de tareas :(

como puedo solucionar este problema ??'

¿Que automáticamente se muestra la barra de taréas, o que automáticamente se muestra el Item de la aplicación en la barra de tareas?

Si es lo segundo entonces una manera de solucionarlo es leyendo el nombre y la descripción de las Propiedades de un Fom... hazlo y pronto sabrás porque te lo dije  :P

Un saludo.








z3nth10n

Elektro tienes razón el es peor que yo  :o :o

Interesados hablad por Discord.