none
Travar Movimento do Form RRS feed

  • Pergunta

  • Boa tarde Galera,

    Estou com uma dúvida de iniciante que sou. Eu tenho vários Forms e quando eu chamo alguns eu não permito que o Form do fundo seja clicado, porém eu consigo movimentar o form principal, colocando ele em qualquer lugar da tela. Como eu faço para deixar o Form sem movimento, ou seja, definir um lugar fixo para ele abrir, por exemplo, Centralizado.

    Estou usando o VS 2010.

    Valeu pela força Galera.

    sexta-feira, 21 de setembro de 2012 16:22

Respostas

  • ola vitor.

    para nao permitir movimentação do seu form, cole este codigo em qualquer aprte do form/codigo.

     protected override void WndProc(ref Message message)
            {
                const int WM_SYSCOMMAND = 0x0112;
                const int SC_MOVE = 0xF010;
    
                switch (message.Msg)
                {
                    case WM_SYSCOMMAND:
                        int command = message.WParam.ToInt32() & 0xfff0;
                        if (command == SC_MOVE)
                            return;
                        break;
                }
    
                base.WndProc(ref message);
            }

    para definir a posiçao que o mesmo irá abrir, coloque este codigo na inicialização do componente

    public frmRelaManut()
            {
                InitializeComponent();
                this.StartPosition = FormStartPosition.Manual;
            }

    caso esta resposta lhe ajude, favor marcar como tal.

    sds

    sexta-feira, 21 de setembro de 2012 16:55
  • desculpa ai carinha.

    veja o teu codigo:

     this.CenterToScreen = FormStartPosition.Manual;

    nao deve ser  this.CenterToScreen.

    entendeu?

    voce muda o manual aqui no final.

    neste caso teu codigo ficaria assim:

     this.StartPosition = FormStartPosition.CenterScreen;

    entendeu?

    qualquer coisa fala ai.

    sexta-feira, 21 de setembro de 2012 17:30

Todas as Respostas

  • Cara, o jeito mais simples, seria criar um form com o FormBorderStyle = None e defini-la como CenterScreen no StartPosition e criar uma barra personalizada para fechar, minimizar e etc, conforme sua necessidade.
    sexta-feira, 21 de setembro de 2012 16:35
  • Vitor,

    Boa tarde,

    Para você configurar o lugar que ele vai abrir, faça o seguinte:

    Selecione o Form e vá na aba propriedades, e muda a propriedade startPosition para qual desejar.

    Obrigado.

    • Sugerido como Resposta Marcos_Vieira sexta-feira, 21 de setembro de 2012 16:43
    sexta-feira, 21 de setembro de 2012 16:42
  • Valeu pela resposta Galera,

    Mas minha dúvida maior é como vou fixar ele nessa posição, entendeu??? Por exemplo, abri o form Centralizado, mas se clicar na barra e arrastar ele vai. Eu queria travar isso, travar o form na posição inicial.

    Isso é possível ou estou viajando???


    sexta-feira, 21 de setembro de 2012 16:49
  • Cara, o que eu disse faz isso. Se setar o FormBorderStyle para None, não permite mover o form, ele fica sem a barra de cima, que contém o título, botão minimizar, fechar e tal. Ai vc cria ela na unha, e seta o StartPosition para CenterScreen, 
    sexta-feira, 21 de setembro de 2012 16:52
  • ola vitor.

    para nao permitir movimentação do seu form, cole este codigo em qualquer aprte do form/codigo.

     protected override void WndProc(ref Message message)
            {
                const int WM_SYSCOMMAND = 0x0112;
                const int SC_MOVE = 0xF010;
    
                switch (message.Msg)
                {
                    case WM_SYSCOMMAND:
                        int command = message.WParam.ToInt32() & 0xfff0;
                        if (command == SC_MOVE)
                            return;
                        break;
                }
    
                base.WndProc(ref message);
            }

    para definir a posiçao que o mesmo irá abrir, coloque este codigo na inicialização do componente

    public frmRelaManut()
            {
                InitializeComponent();
                this.StartPosition = FormStartPosition.Manual;
            }

    caso esta resposta lhe ajude, favor marcar como tal.

    sds

    sexta-feira, 21 de setembro de 2012 16:55
  • Marcos, Valeu pela ajuda, o Form ficou travado mesmo... Show. Mas o comando pra definir a posição apresenta erro quando tento colocar CENTERSCREEN, segue o erro:

     public Login()
            {
                InitializeComponent();
                this.CenterToScreen = FormStartPosition.Manual;
                    
                         }

    Error 1 Cannot assign to 'CenterToScreen' because it is a 'method group' C:\Users\homologa003\Desktop\Project_Pendências_\WindowsFormsApplication3\WindowsFormsApplication3\login.cs 20 13 projectpendencias

    sexta-feira, 21 de setembro de 2012 17:10
  • e se voce deixar manual funciona?


    sexta-feira, 21 de setembro de 2012 17:25
  • Se eu não colocar esse código e preencher na propriedade do Form funciona sim.
    sexta-feira, 21 de setembro de 2012 17:26
  • desculpa ai carinha.

    veja o teu codigo:

     this.CenterToScreen = FormStartPosition.Manual;

    nao deve ser  this.CenterToScreen.

    entendeu?

    voce muda o manual aqui no final.

    neste caso teu codigo ficaria assim:

     this.StartPosition = FormStartPosition.CenterScreen;

    entendeu?

    qualquer coisa fala ai.

    sexta-feira, 21 de setembro de 2012 17:30
  • Valeu mesmo pela força, funcionou. Sou novo em C#, na real não programa há 10 anos...rrsrs... Estou fazendo um sistema de teste na marra e aprendendo várias coisas.

    Valeu pela força.

    sexta-feira, 21 de setembro de 2012 17:32
  • Marcos,

    Abusando um pouco dos seus conhecimentos, poderia me ajudar nesse tópico??

    http://social.msdn.microsoft.com/Forums/pt-BR/vscsharppt/thread/1d389731-6669-4420-b62f-9cd29e284aab

    sexta-feira, 21 de setembro de 2012 17:42
  • Apesar de a opção de remover a borda funcionar perfeitamente, o método ensinado pelo colega Vítor é muito mais produtivo, pois poupa-nos o trabalho de elaborar uma nova barra ativa.
    quinta-feira, 5 de setembro de 2019 01:50
  • Leonardo, 

    Como faço caso queira deixar meu Form sem a borda, mas livre para que possa ser movimentado pela tela ao copilar ?

    quarta-feira, 18 de agosto de 2021 13:09
  • Boa tarde Galera,

    Estou com uma dúvida de iniciante que sou. Eu tenho vários Forms e quando eu chamo alguns eu não permito que o Form do fundo seja clicado, porém eu consigo movimentar o form principal, colocando ele em qualquer lugar da tela. Como eu faço para deixar o Form sem movimento, ou seja, definir um lugar fixo para ele abrir, por exemplo, Centralizado.

    Estou usando o VS 2010.

    Valeu pela força Galera.

    Boa noite. Estou montado um grupo de estudo para linguagem C# que vai do básico até o avançado sem fins lucrativos onde todo mundo ensina e aprende dentro da plataforma Discord. Se caso você tiver interesse ou conhecer alguém que queira, é só entrar em contato comigo pelo programa Discord. O meu perfil é Janderson#4619

    Obrigado!

    sábado, 25 de setembro de 2021 02:21