Usuário com melhor resposta
Posicionar label no lado esquerdo do rodape do form

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.
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
- Marcado como Resposta Filipe B CastroModerator quarta-feira, 17 de janeiro de 2018 16:15
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
-
-
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
-
-
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.
-
-
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.
-
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)));
-
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 -
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();
-
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 -
-
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.
-
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.
-
-
-
-
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.
-
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
-
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- Editado Rafael Almeida - MVPMVP domingo, 14 de janeiro de 2018 21:15 nome
-
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.
- Editado Juliano Nunes Silva Oliveira segunda-feira, 15 de janeiro de 2018 10:52
-
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);
-
-
-
-
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 -
-
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 -
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
-
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 -
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;
-
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 -
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.
-
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
-
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
- Marcado como Resposta Filipe B CastroModerator quarta-feira, 17 de janeiro de 2018 16:15