none
Posicionar label no lado esquerdo do rodape do form RRS feed

  • Pergunta

  • Olá pessoal,

    Tenho uma label, e quero posiciona-la no rodapé do form do lado esquerdo via código, porque o form é redimensionado, não está dando certo, estou fazendo assim:

    lblNomedoComputador.Anchor = AnchorStyles.Left;

    WindowsForm, C#.

    Obrigado.

    terça-feira, 9 de janeiro de 2018 20:46

Respostas

  • Achei o problema, a propriedade MaximizeBox do form tem que ser = True para o form ficar acima da barra de tarefas, mas eu não quero deixar o usuário ficar maximizando e restaurando o form principal, mas aí já é um outro problema, agradeço a todos pela atenção

    Mariano, Rafael e Juliano

    segunda-feira, 15 de janeiro de 2018 22:53

Todas as Respostas

  • Tente assim:

    lblNomedoComputador.Anchor = (AnchorStyles.Bottom | AnchorStyles.Left);


    Juliano Nunes - http://linkedin.com/in/julianonunes

    Lembre-se de clicar em "Votar como útil" e "Marcar como Resposta" caso tenha respondido sua dúvida.

    Remember to "Vote as Helpful" and "Mark as Answer" if your question has been answered.

    • Sugerido como Resposta Sérgio Model quarta-feira, 10 de janeiro de 2018 12:20
    quarta-feira, 10 de janeiro de 2018 10:56
  • Olá Juliano,

    Não deu certo, não está posicionando no rodapé do lado esquerdo, uma dúvida a propriedade Anchor, tenho que deixar como None ?

    WindowsForm, C#.

    Obrigado.

    quarta-feira, 10 de janeiro de 2018 11:53
  • Só definir anchor para bottom e para left:

    this.label1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));



    • Editado Sérgio Model quarta-feira, 10 de janeiro de 2018 12:16
    • Sugerido como Resposta Sérgio Model quarta-feira, 10 de janeiro de 2018 12:19
    • Não Sugerido como Resposta Sérgio Model quarta-feira, 10 de janeiro de 2018 12:19
    • Sugerido como Resposta Sérgio Model quarta-feira, 10 de janeiro de 2018 12:32
    quarta-feira, 10 de janeiro de 2018 12:13
  • Sérgio, Também não deu certo, obrigado por opinar.
    quarta-feira, 10 de janeiro de 2018 12:34
  • Em qual evento do seu form está o código? O Label é criado dinamicamente? Ele está dentro de algum container (Panel, por exemplo)?

    Juliano Nunes - http://linkedin.com/in/julianonunes

    Lembre-se de clicar em "Votar como útil" e "Marcar como Resposta" caso tenha respondido sua dúvida.

    Remember to "Vote as Helpful" and "Mark as Answer" if your question has been answered.

    quarta-feira, 10 de janeiro de 2018 15:34
  • Olá Juliano,

    Está no load do form, não está dentro do Panel, o Label foi apenas arrastado para o form.

    quarta-feira, 10 de janeiro de 2018 17:07
  • Boa tarde, Porter Porter.

    Conseguiu o que precisava?

    Se ainda não, o que falta?

    Atenciosamente,

    Filipe B de Castro

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    sexta-feira, 12 de janeiro de 2018 18:21
    Moderador
  • Bom dia Felipe,

    Ainda não não consegui, no Load do form, em tempo de execução quando o form for redimensionado quero que a label se posicione no rodapé do form e do lado esquerdo, tentei esse comando mas não deu certo.

    this.label1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));

    sábado, 13 de janeiro de 2018 11:06
  • Olá Porter Porter,

     A resposta do Juliano está correta, é uma alternativa para o que você deseja.

    Você perguntou se o Anchor deve ficar none, não, não deve, ele tem que está da mesma forma que o Juliano citou.

    Uma possibilidade é que esse seu LABEL, não está diretamente no FORM e sim dentro de algum PANEL, ou outro componente.

    Se estiver de fato não irá funcionar.

    Outra coisa após configurar com o que o Juliano sugeriu dá um refresh nele... seulabel.Refresh(); 

    Abraços!


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    Rafael Almeida
    Microsoft Developer .NET
    Microsoft Certified Professional
    Development Leader at JAMSOFT Informática
    Email: ralms@ralms.net
    Blog -  GitHub  -  LinkedIn -  Twitter

    sábado, 13 de janeiro de 2018 12:52
  • Não está dando certo, a propriedade IsMdiContainer do form = True, mudei para False, mas não resolveu, deixei Anchor na propriedade da Label como Bottom, Left, não sei onde estou errando.

    Código

    Label1.Anchor = (AnchorStyles.Bottom | AnchorStyles.Left);

    Label1.Refresh();

    sábado, 13 de janeiro de 2018 13:51
  • Não está dando certo, a propriedade IsMdiContainer do form = True, mudei para False, mas não resolveu, deixei Anchor na propriedade da Label como Bottom, Left, não sei onde estou errando.

    Código

    Label1.Anchor = (AnchorStyles.Bottom | AnchorStyles.Left);

    Label1.Refresh();

    Porter, 

    Tire um print da tela e coloca aqui!


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    Rafael Almeida
    Microsoft Developer .NET
    Microsoft Certified Professional
    Development Leader at JAMSOFT Informática
    Email: ralms@ralms.net
    Blog -  GitHub  -  LinkedIn -  Twitter

    sábado, 13 de janeiro de 2018 13:58
  • sábado, 13 de janeiro de 2018 14:37
  • Agora entendi o problema. Como em Design Time o componente não está posicionado no local desejado (canto inferior esquerdo), a propriedade anchor parece não funcionar (mas está funcionando, para o que ela serve).

    Para fazer o comportamento desejado ficou faltando uma linha de código. Segue o código completo:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace WindowsFormsApp1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
                label1.Anchor = AnchorStyles.Left | AnchorStyles.Bottom;
                label1.Location = new Point(0, this.ClientSize.Height - label1.Height);
            }
        }
    }
    


    Juliano Nunes - http://linkedin.com/in/julianonunes

    Lembre-se de clicar em "Votar como útil" e "Marcar como Resposta" caso tenha respondido sua dúvida.

    Remember to "Vote as Helpful" and "Mark as Answer" if your question has been answered.

    sábado, 13 de janeiro de 2018 17:51
  • Bom dia Juliano,

    Está quase dando certo, mas nesse comando, acho que é preciso subtrair a altura da barra de ferramentas e da barra de tarefas porque da forma como está, a label está ficando por baixo da barra de tarefas, entendeu, estou procurando o comando que captura a altura da barra de tarefas, você sabe qual é ?

    Obrigado.

    domingo, 14 de janeiro de 2018 13:06
  • Vc vai criar timer ou ir evento de reposinar o form

    e mudar posição da Label

    Label.location()  = new Point (x,y);

    ai vc pega x = 0

    e no y = poem tamanho do form -(menos) size(tamanho) no eixo x da LABEL1;

    domingo, 14 de janeiro de 2018 13:11
  • Em tempo de execução, como faço para capturar a altura do form, tem como ?

    Obrigado.

    domingo, 14 de janeiro de 2018 13:42
  • NomefDoForm.height 

    ou 

    NomedoForm.Width

    domingo, 14 de janeiro de 2018 14:13
  • Basta pegar o nome dos componentes e usar a propriedade Height dos mesmos.

    Juliano Nunes - http://linkedin.com/in/julianonunes

    Lembre-se de clicar em "Votar como útil" e "Marcar como Resposta" caso tenha respondido sua dúvida.

    Remember to "Vote as Helpful" and "Mark as Answer" if your question has been answered.

    domingo, 14 de janeiro de 2018 19:43
  • Boa tarde.

    Coloquei uma textbox em um timer para teste.

    Mesmo com o form maximizado, o controle fica coladinho nos cantos.

    Se ajudou, por gentileza, marque como útil/resposta.

    public partial class Form_teste : Form { int i = 0 ; public Form_teste() { InitializeComponent(); } private void Form_teste_Load(object sender, EventArgs e) { timer1.Interval = 1000; //1 segundo timer1.Start(); // inicia contagem do tempo } private void timer1_Tick(object sender, EventArgs e) { if (i == 0 ) { this.txtFilialDestino.Anchor = (AnchorStyles.Top | AnchorStyles.Right); this.txtFilialDestino.Location = new Point(this.Width - this.txtFilialDestino.Width,0); i = 1; return; } if (i == 1) { this.txtFilialDestino.Anchor = (AnchorStyles.Bottom | AnchorStyles.Right ); this.txtFilialDestino.Location = new Point(this.Width - this.txtFilialDestino.Width, this.ClientSize.Height - this.txtFilialDestino.Height); i = 2; return; } if (i == 2) { this.txtFilialDestino.Anchor = (AnchorStyles.Top | AnchorStyles.Left); this.txtFilialDestino.Location = new Point(0, 0); i = 3; return; } if (i == 3) { this.txtFilialDestino.Anchor = (AnchorStyles.Bottom | AnchorStyles.Left); this.txtFilialDestino.Location = new Point(0,this.ClientSize.Height - this.txtFilialDestino.Height); i = 0; return; }

    }



    MARIANO1776

    domingo, 14 de janeiro de 2018 20:53
  • Olá Porter Porter 

    Aqui está a solução que precisa:

    Primeiro método para ajustar o controle, caso tenha mais algum pode incorporar aqui nesse método:

    void AjustarControles()
    {
        lblNomedoComputador.Location = new Point(0, ClientSize.Height - lblNomedoComputador.Height);
    }

    No evento SizeChanged e Shown coloque o método para forçar, quando o form for carregado, e quando houver mudanças no tamanho no formulário.

    Ficando assim:

    void AjustarControles()
    {
        lblNomedoComputador.Location = new Point(0, ClientSize.Height - lblNomedoComputador.Height);
    }
    
    private void Form1_Shown(object sender, EventArgs e)
    {
        AjustarControles();
    }
    
    private void Form1_SizeChanged(object sender, EventArgs e)
    {
        AjustarControles();
    }

    Com isso acredito que agora terá sucesso.

    Abraços!


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    Rafael Almeida
    Microsoft Developer .NET
    Microsoft Certified Professional
    Development Leader at JAMSOFT Informática
    Email: ralms@ralms.net
    Blog -  GitHub  -  LinkedIn -  Twitter


    domingo, 14 de janeiro de 2018 21:14
  • Bom dia,

    Usando a propriedade ClientSize do Form, você não precisa subtrair a altura da StatusBar, apenas da toolbar. Com o Anchor não é necessário Timer ou tratar os eventos relacionados ao redimensionamento do form, já é automático. Veja o código e os prints abaixo:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace WindowsFormsApp1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
                label1.Anchor = AnchorStyles.Left | AnchorStyles.Bottom;
                label1.Location = new Point(0, this.ClientSize.Height - label1.Height - toolStrip1.Height);
            }
        }
    }
    Janela pequena

    Janela Maximizada


    Juliano Nunes - http://linkedin.com/in/julianonunes

    Lembre-se de clicar em "Votar como útil" e "Marcar como Resposta" caso tenha respondido sua dúvida.

    Remember to "Vote as Helpful" and "Mark as Answer" if your question has been answered.


    segunda-feira, 15 de janeiro de 2018 10:51
  • A única forma que deu certo até agora é subtraindo 50 da altura, se não subtrair 50, a label fica debaixo da barra de tarefas.

    lblNomeComputador.Anchor = (AnchorStyles.Left | AnchorStyles.Bottom);
    lblNomeComputador.Location = new Point(0, this.ClientSize.Height - lblNomeComputador.Height - 50);

    segunda-feira, 15 de janeiro de 2018 17:06
  • segunda-feira, 15 de janeiro de 2018 17:10
  • Por gentileza, envie um print da sua tela.

    MARIANO1776

    segunda-feira, 15 de janeiro de 2018 17:11
  • Olá, a tela é essa acima, em execução e maximizada, se observar, verá que a label está embaixo da barra de tarefas.

    segunda-feira, 15 de janeiro de 2018 17:25
  • Olá, a tela é essa acima, em execução e maximizada, se observar, verá que a label está embaixo da barra de tarefas.

    Mais isso não tem nada a ver com o sistema.

    Clique com o direito sobre a barra de tarefas e marque a opção bloquear barra de tarefas. Assim a aplicação irá ser maximizada acima da barra!


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    Rafael Almeida
    Microsoft Developer .NET
    Microsoft Certified Professional
    Development Leader at JAMSOFT Informática
    Email: ralms@ralms.net
    Blog -  GitHub  -  LinkedIn -  Twitter

    segunda-feira, 15 de janeiro de 2018 17:37
  • A opção Bloquear a barra de tarefas, já está marcada, e se desmarcar, a posição da label, continua a mesma, lembrando que é o windows 7 Ultimate.
    segunda-feira, 15 de janeiro de 2018 19:05
  • A opção Bloquear a barra de tarefas, já está marcada, e se desmarcar, a posição da label, continua a mesma, lembrando que é o windows 7 Ultimate.

    Rapaz... tá difícil rss

    Vamos tentar mais isso aqui:

    void AjustarControles()
    {
        lblNomedoComputador.Location = new Point(0, ClientSize.Height - lblNomedoComputador.Height);
    }
    
    private void Form1_Shown(object sender, EventArgs e)
    {
        this.WindowState = FormWindowState.Normal;
        this.WindowState = FormWindowState.Maximized;
        AjustarControles();
    }
    
    private void Form1_SizeChanged(object sender, EventArgs e)
    {
        AjustarControles();
    }

    Tentei isso ai acima!

     

    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    Rafael Almeida
    Microsoft Developer .NET
    Microsoft Certified Professional
    Development Leader at JAMSOFT Informática
    Email: ralms@ralms.net
    Blog -  GitHub  -  LinkedIn -  Twitter

    segunda-feira, 15 de janeiro de 2018 19:11
  • Posso estar falando bobagem, mas vamos tentar:

    A resolução do monitor é compatível com seu form.

    Falo isto por que já vi monitores com medidas irregulares e que distorcem as telas fazendo os controles ficarem de fora à direita ou abaixo da barras de tarefas.

    Em vez de 1280 x 800

    era

    1200 x 800


    MARIANO1776

    segunda-feira, 15 de janeiro de 2018 19:12
  • Posso estar falando bobagem, mas vamos tentar:

    A resolução do monitor é compatível com seu form.

    Falo isto por que já vi monitores com medidas irregulares e que distorcem as telas fazendo os controles ficarem de fora à direita ou abaixo da barras de tarefas.

    Em vez de 1280 x 800

    era

    1200 x 800


    MARIANO1776

    Mais o cálculo é feito em cima do que foi renderizado na tela!

    Então está correto as soluções propostas.o que está acontecendo é que o form não está sendo totalmente preenchido na área livre do desktop, que já subtrai a barra de tarefas!


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    Rafael Almeida
    Microsoft Developer .NET
    Microsoft Certified Professional
    Development Leader at JAMSOFT Informática
    Email: ralms@ralms.net
    Blog -  GitHub  -  LinkedIn -  Twitter

    segunda-feira, 15 de janeiro de 2018 19:18
  • A Resolução é 1366 X 768, concordo que o cálculo é feito em cima do que foi renderizado na tela, teria que dar certo, acrescentei essas linhas, mas não deu resultado.

    this.WindowState = FormWindowState.Normal;
    this.WindowState = FormWindowState.Maximized;

    segunda-feira, 15 de janeiro de 2018 19:41
  • Porter Porter faz o seguinte crie um projeto a parte, somente com esse form inicial.

    Compacte e disponibilize o link pra download... só assim iremos descobrir o que está acontecendo.

    E poderemos assim dar uma resolução ao problema.


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    Rafael Almeida
    Microsoft Developer .NET
    Microsoft Certified Professional
    Development Leader at JAMSOFT Informática
    Email: ralms@ralms.net
    Blog -  GitHub  -  LinkedIn -  Twitter

    segunda-feira, 15 de janeiro de 2018 19:47
  • Pessoal, criei um outro projeto no mesmo computador, e funcionou corretamente, os comandos que estão sendo passados, estão corretos, percebi que neste outro projeto, o form fica acima da barra de tarefas, diferente do projeto que está dando problema, que ultrapassa a barra de tarefas, agora eu não sei em qual propriedade do form estou errando, terei que comparar os dois projetos.

    Obrigado a todos pela atenção.

    segunda-feira, 15 de janeiro de 2018 20:06
  • Boa tarde.

    Veja se é isto, pois assim a barra de ferramentas encobre o formulário.

    Troque por isto para experimentar.


    MARIANO1776


    • Editado Mariano1776 segunda-feira, 15 de janeiro de 2018 20:24 digitação
    segunda-feira, 15 de janeiro de 2018 20:22
  • Achei o problema, a propriedade MaximizeBox do form tem que ser = True para o form ficar acima da barra de tarefas, mas eu não quero deixar o usuário ficar maximizando e restaurando o form principal, mas aí já é um outro problema, agradeço a todos pela atenção

    Mariano, Rafael e Juliano

    segunda-feira, 15 de janeiro de 2018 22:53