1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

C# - Mover a form Principal

Discussão em 'Programação' iniciada por andrepadez, 17 de Abril de 2008. (Respostas: 4; Visualizações: 1863)

  1. andrepadez

    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
     
  2. andrepadez

    andrepadez Power Member

    Pensei eu que era fácil, mas afinal, 27 já viram e ainda não há uma ideia hehehe.
    Come on!!!
     
  3. balute

    balute Power Member

    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;
                }
            }
     
  4. andrepadez

    andrepadez Power Member

    Gracias. Muchas!!!

    Estou só a acabar os algoritmos principais, vou tentar isso ainda hoje.
    Depois digo-te como correu.
     
  5. andrepadez

    andrepadez Power Member

    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!!!
     

Partilhar esta Página