Estou tentando alinhar corretamente um controle em a StatusStrip
. Como eu posso fazer isso?
Não vejo uma propriedade para definir nos ToolStripItem
controles que especifica seu alinhamento físico no pai StatusStrip
.
Estou tentando alinhar corretamente um controle em a StatusStrip
. Como eu posso fazer isso?
Não vejo uma propriedade para definir nos ToolStripItem
controles que especifica seu alinhamento físico no pai StatusStrip
.
Respostas:
Encontrei nos fóruns do MSDN quase imediatamente após a postagem :)
Você pode usar um ToolStripLabel
para alinhar à direita os controles definindo a Text
propriedade como string.Empty
e Spring
como true
. Isso fará com que ele preencha todo o espaço disponível e empurre todos os controles para a direita do ToolStripLabel
over.
StatusStrip.LayoutStyle == ToolStripLayoutStyle.Table
(que é o padrão)
Alignment
propriedade faz, porque ela não fez nada em meu aplicativo.
Como observação adicional, isso se deve ao fato de que na API do Win32 uma célula tem largura fixa ou preenche o espaço restante -1
int statwidths[] = {100, -1};
SendMessage(hStatus, SB_SETPARTS, sizeof(statwidths)/sizeof(int), (LPARAM)statwidths);
SendMessage(hStatus, SB_SETTEXT, 0, (LPARAM)"Hi there :)");
Se a memória não me falha, você pode ter apenas uma célula de preenchimento (-1) por barra de status.
Você também pode adicionar uma terceira célula do meio e dar a ela a propriedade fill para obter uma barra de status de aparência mais consistente. Consistente porque o Mensagens tem uma inserção à direita, onde você esperava. Um pouco como a foto do mspaint encontrada na página do MSDN para StatusBars
Eu gosto da avaliação do criativo: D
Você pode exibir o Button
no final de StatusStrip
usando a lógica abaixo.
ToolstripLabel
aoStatusStrip
string.Empty
Padding
para oToolstripLabel
Por exemplo:
this.toolStripStatusLabel1.Padding = new Padding((int)(this.Size.Width - 75), 0, 0, 0);
Descobri que você pode definir o Layout de StatusStrip como HorizontalStackWithOverflow. Em seguida, para cada controle no StatusStrip que você deseja no lado direito, defina o Alinhamento de controle como Direito.
Eu gosto mais disso, pois você não precisa de nenhum controle extra ou fictício para alinhar.
Encontro uma maneira geral de definir a localização de um controle em StatusStrip
. Você pode exibir o botão em qualquer posição no StatusStrip
usando as etapas abaixo.
Defina o texto como uma quantidade adequada de espaço, como
toolStripStatusLabel1.Text = "";
Se o layout não for o que você deseja, vá para a etapa 2 para alterar a quantidade de espaço toolStripStatusLabel1.Text
, caso contrário, o trabalho foi feito.
Defina a propriedade de faixa da ferramenta RightToLeft como True.