Em WinForms
Eu estou usando um Label
para exibir diferentes mensagens como sucesso, fracasso, etc.
Gostaria de centralizar esse rótulo no formulário central. Quero uma solução que a mantenha centralizada, se houver apenas uma palavra ou uma frase inteira no rótulo.
Control.Dock
propriedade ( msdn.microsoft.com/en-us/library/… ), você pode encaixar (colar) um controle em um determinado lado do contêiner. Por exemploLeft
,Top
,Right
ouBottom
.Fill
informa ao controle para ocupar todo o espaço disponível no contêiner.Dock
cenário.Dock
configuração era desnecessária. Alterar aAutoSize
propriedade fornece ao rótulo uma caixa delimitadora na qual você pode ajustar manualmente o tamanho.Algum conteúdo adicional secundário para configuração programaticamente:
O alinhamento entre o estilo das docas e o conteúdo pode diferir das suas necessidades. Por exemplo, para um rótulo simples em um formulário wpf, uso DockStyle.None.
fonte
Você conseguirá isso com a propriedade de configuração Anchor: None.
fonte
Se você não deseja encaixar o rótulo em toda a área disponível, basta definir o evento SizeChanged em vez de TextChanged. A alteração de cada letra altera a propriedade width do label e o texto quando a propriedade de dimensionamento automático é definida como True. Portanto, a propósito, você pode usar qualquer fórmula para manter o rótulo centralizado no formulário.
fonte
A resposta aceita não funcionou para mim por dois motivos:
BackColor
definido issoAutoSize = false
eDock = Fill
faz com que a cor do plano de fundo preencha todo o formulárioAutoSize
definido como falso de qualquer maneira, porque o texto do meu marcador era dinâmicoEm vez disso, simplesmente usei a largura do formulário e a largura do rótulo para calcular o deslocamento esquerdo:
fonte
Eu queria fazer algo semelhante, mas em um formulário com uma imagem de plano de fundo, descobri que, quando o texto no rótulo era alterado, as repetições eram óbvias com esse método, então fiz o seguinte: * Defina o tamanho automático do rótulo como true e TextAlign como MiddleCenter
Então, toda vez que o texto mudava (o meu era feito usando um timer), chamei o seguinte método:
E defina a propriedade Location do rótulo para esse valor de retorno. Isso garantiu que o rótulo estivesse sempre no centro do formulário quando o texto foi alterado e as alterações de novo para um formulário em tela cheia não eram óbvias.
fonte
Você pode experimentar o seguinte snippet de código:
É realmente centro
fonte