Estou tentando alinhar corretamente um controle em a StatusStrip. Como eu posso fazer isso?
Não vejo uma propriedade para definir nos ToolStripItemcontroles 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 ToolStripItemcontroles 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 ToolStripLabelpara alinhar à direita os controles definindo a Textpropriedade como string.Emptye Springcomo true. Isso fará com que ele preencha todo o espaço disponível e empurre todos os controles para a direita do ToolStripLabelover.
StatusStrip.LayoutStyle == ToolStripLayoutStyle.Table(que é o padrão)
Alignmentpropriedade 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 Buttonno final de StatusStripusando a lógica abaixo.
ToolstripLabelaoStatusStripstring.EmptyPaddingpara oToolstripLabelPor 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 StatusStripusando 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.