C# - Mover a form Principal

andrepadez

Power Member
Esta é fácil, mas não consigo encontrar a propriedade.

Se uma form tem FormBorderStyle <none>, como é que posso definir que todas as áreas que não sejam botões ou controlos servem para movê-lo no ecrã???

Thx pela ajuda
 
Não existe nenhuma propriedade nativa que permita fazer isso. Tens que manipular os eventos relacionados com o rato.

Vais ter que usar estes eventos (do Form):
- MouseDown: para indicar que a form pode ser movida, e salvar as coordenadas do rato nesse instante;
- MouseMove: para mover a form, baseando-se nas coordenadas salvas anteriormente;
- MouseUp: para indicar que parou o movimento da form.

Fica aqui o código que fiz para testar:
Código:
        Point Coordenadas;
        bool Clicado = false;
        private void Form1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
        {
            Coordenadas = e.Location;
            Clicado = true;
        }
        private void Form1_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
        {
            Clicado = false;
        }
        private void Form1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
        {
            if (Clicado)
            {
                this.Left += e.X - Coordenadas.X;
                this.Top += e.Y - Coordenadas.Y;
            }
        }
 
Boas.
Funcionou perfeitamente embora ainda tivesse que suar um bocado para descobrir como e onde colocava os eventHandlers que chamam as funções que tu definiste.
Assim, coloquei as seguintes linhas no Form Main(), a seguir a:

InicializeComponent();
this.MouseDown += new MouseEventHandler(FormPokerTimerMain_MouseDown);
this.MouseMove += new MouseEventHandler(FormPokerTimerMain_MouseMove);
this.MouseUp += new MouseEventHandler(FormPokerTimerMain_MouseUp);

Mais uma vez, muito obrigado!!!
 
Back
Topo