Jump to content
sergiofer

Fixar posição de Form

Recommended Posts

sergiofer

Olá

Tenho necessidade de fixar a posição de uma janela no centro do ecran. Alguém me pode ajudar?

Obrigado desde já

Share this post


Link to post
Share on other sites
pmaster

Bom dia

Não sei se é isto que queres, mas se quiseres defenir a posição da janela podes usar:

Me.Location = New Point(30, 90)

mas se a quiseres fixar sem o utilizador poder arrastar, nas propriedades da form em FormBorderStyle colocas "None"

Espero que seja isto que procuras..

Share this post


Link to post
Share on other sites
bioshock

Fixar por completo, sem poder mexer? Ou fixar no meio simplesmente? Se assim for, tens nas propriedades do form, a opção: "Startposition" e escolhes a "CenterScreen".

Share this post


Link to post
Share on other sites
jpaulino

Vê este exemplo de como o fazer:

Imports System.ComponentModel
Imports System.Windows.Forms

Public Class MoveableForm
    Inherits Form

    Private Const WM_NCLBUTTONDOWN As Int32 = &HA1
    Private Const WM_SYSCOMMAND As Int32 = &H112

    Private Const HTCAPTION As Int32 = &H2

    Private Const SC_MOVE As Int32 = &HF010

    Private m_Moveable As Boolean

    Public Sub New()
        MyBase.New()
        Me.Moveable = True
    End Sub

    < _
        Category("Behavior"), _
        Description("Allows the form to be moved.") _
    > _
    Public Property Moveable() As Boolean
        Get
            Return m_Moveable
        End Get
        Set(ByVal Value As Boolean)
            m_Moveable = Value
        End Set
    End Property

    Protected Overrides Sub WndProc(ByRef m As Message)
        If Not m_Moveable Then
            If _
                ( _
                    m.Msg = WM_SYSCOMMAND AndAlso _
                    m.WParam.ToInt32() = SC_MOVE _
                ) _
                OrElse _
                ( _
                    m.Msg = WM_NCLBUTTONDOWN AndAlso _
                    m.WParam.ToInt32() = HTCAPTION _
                ) _
            Then
                Return
            End If
        End If
        MyBase.WndProc(m)
    End Sub
End Class

Fonte: Preventing a form from being moved

Share this post


Link to post
Share on other sites
sergiofer

Vê este exemplo de como o fazer:

Imports System.ComponentModel
Imports System.Windows.Forms

Public Class MoveableForm
    Inherits Form

    Private Const WM_NCLBUTTONDOWN As Int32 = &HA1
    Private Const WM_SYSCOMMAND As Int32 = &H112

    Private Const HTCAPTION As Int32 = &H2

    Private Const SC_MOVE As Int32 = &HF010

    Private m_Moveable As Boolean

    Public Sub New()
        MyBase.New()
        Me.Moveable = True
    End Sub

    < _
        Category("Behavior"), _
        Description("Allows the form to be moved.") _
    > _
    Public Property Moveable() As Boolean
        Get
            Return m_Moveable
        End Get
        Set(ByVal Value As Boolean)
            m_Moveable = Value
        End Set
    End Property

    Protected Overrides Sub WndProc(ByRef m As Message)
        If Not m_Moveable Then
            If _
                ( _
                    m.Msg = WM_SYSCOMMAND AndAlso _
                    m.WParam.ToInt32() = SC_MOVE _
                ) _
                OrElse _
                ( _
                    m.Msg = WM_NCLBUTTONDOWN AndAlso _
                    m.WParam.ToInt32() = HTCAPTION _
                ) _
            Then
                Return
            End If
        End If
        MyBase.WndProc(m)
    End Sub
End Class

Fonte: Preventing a form from being moved

Funciona

Será possivel explicares o que faz mais concretamente, e se para fazer isto noutras Forms tenho que colocar o código dentro dessas forms, ou posso colocar na main, e depois utilizar essa propriedade nas restantes forms?

Obrigado a todos pela ajuda

Share this post


Link to post
Share on other sites
jpaulino

Podes criar uma classe que herde as propriedades de um Form e utilizar este código. Depois, na criação de Forms, herdas as propriedades e métodos do classe que criaste.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.