2009-02-03 15 views
84

Estoy tratando de alinear a la derecha un control en un StatusStrip. ¿Cómo puedo hacer eso?¿Cómo alineo correctamente los controles en un StatusStrip?

No veo una propiedad para establecer en los controles ToolStripItem que especifica su alineación física en el elemento primario StatusStrip.

How do I get Messages drop down to be right aligned? http://i.friendfeed.com/ed90b205f64099687db30553daa79d075f280b90

+3

Realice un elemento de la barra de herramientas de etiquetas con la propiedad Primavera establecida en verdadero. Detalles: http://www.dotnetperls.com/statusstrip (PS Sí, sé que es una pregunta antigua) –

Respuesta

196

lo encontró a través de foros de MSDN casi inmediatamente después de la publicación :)

Se puede utilizar un ToolStripLabel a pseudo derecho alinear los controles estableciendo la propiedad Text a string.Empty y establecer la propiedad Spring a true. Esto hará que ocupe todo el espacio disponible y presione todos los controles a la derecha del ToolStripLabel.

Right aligned Messages http://i.friendfeed.com/f2fc7799d0897a4e835eedde83416f50c245cd6d

+23

Esto funcionará ** SOLO ** si 'StatusStrip.LayoutStyle == ToolStripLayoutStyle.Table' (que es el uno por defecto) –

+10

Nice. Un StatusStripLabel con Spring en cada lado parece centrar los controles – mcdon

+0

Ojalá hubiera una manera "real" de hacerlo, pero esto funciona así que gracias. Me pregunto qué hace la propiedad 'Alignment', porque no hizo nada en mi aplicación. – TheGateKeeper

4

Como nota adicional esto se debe al hecho de que en el Win32 API es una célula ya sea de ancho fijo o llena el espacio restante -1

int statwidths[] = {100, -1}; 

SendMessage(hStatus, SB_SETPARTS, sizeof(statwidths)/sizeof(int), (LPARAM)statwidths); 
SendMessage(hStatus, SB_SETTEXT, 0, (LPARAM)"Hi there :)"); 

Si la memoria no me falla usted puede tener solo una celda de relleno (-1) por barra de estado.

También podría agregar una tercera celda intermedia y otorgarle la propiedad de relleno para obtener una Barra de estado más concisa. Consistente porque Mensajes tiene un recuadro a su izquierda, donde lo esperaría. Un poco como en la vacuna mspaint encontrado en el MSDN page for StatusBars

me gusta el appreach creativa sin embargo: D

2

Puede visualizar el Button al final de la StatusStrip mediante el uso de la lógica continuación.

  1. Añadir un ToolstripLabel al texto Conjunto StatusStrip
  2. como string.Empty
  3. Conjunto Padding para la ToolstripLabel

Por ejemplo:

this.toolStripStatusLabel1.Padding = new Padding((int)(this.Size.Width - 75), 0, 0, 0); 
+0

_agregar una tercera celda intermedia y otorgarle la propiedad de relleno_ No veo ninguna propiedad de este tipo. – TaW

-1

Dado que la respuesta fue aceptada, hay ahora es una forma mucho más fácil. Simplemente configure la propiedad de tira de herramienta RightToLeft en True.

1

Mantener una etiqueta toolstrip, establecer la propiedad de la primavera como verdadero y para la etiqueta de alinear el texto en bottomleft

-1

encuentro un modo general para definir la ubicación de un control en StatusStrip. Puede mostrar el botón en cualquier posición en el StatusStrip siguiendo los pasos a continuación.

  1. Añadir un ToolstripLabel al texto Conjunto StatusStrip
  2. como una cantidad adecuada de espacio como

    toolStripStatusLabel1.Text = " ";

  3. Si el diseño no es lo que quiere, tiene al paso 2 para cambiar la cantidad de espacio en toolStripStatusLabel1.Text, el trabajo se ha hecho otra cosa.

Cuestiones relacionadas