2009-01-14 29 views
11

Considera System.Windows.Forms.StatusStrip. He agregado un StatusStrip a mi aplicación Windows Forms, pero estoy teniendo algunos problemas.Usando StatusStrip en C#

Me gustaría tener una etiqueta anclada a la izquierda y una barra de progreso anclada a la derecha en el StatusStrip, pero no puedo encontrar una manera de establecer estas propiedades.

Pensé entonces que podría necesitar crear dos StatusStrips y anclarlos en cualquier lado de la parte inferior del formulario ... Eso no funcionó; además de eso, simplemente no se siente bien.

Respuesta

27

Simplemente configure la propiedad Spring en el control de la etiqueta en True y debería estar listo para empezar.

+7

Si lo hace, también querrá cambiar la alineación predeterminada de la etiqueta de MiddleCenter a LeftCenter. –

+0

Gracias a ambos ... ¡perfecto! – Brad

0

¿Has probado la propiedad Alignment de ProgresBarToolStripItem en el Right?

+0

La alineación no funcionará sola con el diseño de tabla predeterminado. –

+0

Sí, lo hice, eso no funcionó – Brad

7

Lo que tiene que hacer es establecer la propiedad de alineación de su barra de progreso a la derecha. A continuación, configure el Estilo de diseño de StatusStrip en HorizontalStackWithOverflow.

private void InitializeComponent() 
    { 
     this.statusStrip1 = new System.Windows.Forms.StatusStrip(); 
     this.toolStripStatusLabel1 = new System.Windows.Forms.ToolStripStatusLabel(); 
     this.toolStripProgressBar1 = new System.Windows.Forms.ToolStripProgressBar(); 
     this.statusStrip1.SuspendLayout(); 
     this.SuspendLayout(); 
     // 
     // statusStrip1 
     // 
     this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { 
    this.toolStripStatusLabel1, 
    this.toolStripProgressBar1}); 
     this.statusStrip1.LayoutStyle = System.Windows.Forms.ToolStripLayoutStyle.HorizontalStackWithOverflow; 
     this.statusStrip1.Location = new System.Drawing.Point(0, 250); 
     this.statusStrip1.Name = "statusStrip1"; 
     this.statusStrip1.Size = new System.Drawing.Size(467, 22); 
     this.statusStrip1.TabIndex = 0; 
     this.statusStrip1.Text = "statusStrip1"; 
     // 
     // toolStripStatusLabel1 
     // 
     this.toolStripStatusLabel1.Name = "toolStripStatusLabel1"; 
     this.toolStripStatusLabel1.Size = new System.Drawing.Size(117, 17); 
     this.toolStripStatusLabel1.Text = "toolStripStatusLabel1"; 
     // 
     // toolStripProgressBar1 
     // 
     this.toolStripProgressBar1.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right; 
     this.toolStripProgressBar1.Name = "toolStripProgressBar1"; 
     this.toolStripProgressBar1.Size = new System.Drawing.Size(100, 16); 

    } 

    private System.Windows.Forms.StatusStrip statusStrip1; 
    private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel1; 
    private System.Windows.Forms.ToolStripProgressBar toolStripProgressBar1; 
+0

Por favor, Dios, tiene que haber una manera de configurarlo visualmente. :) –

+0

Hay. Estaba mostrando el código de diseñador. Solo encuentra las propiedades en el panel de propiedades ... –

+1

En realidad, la propiedad 'Alignment' no está disponible en la cuadrícula de propiedades de la clase' ToolStripStatusLabel' (por alguna razón tiene el atributo 'Browsable (false)', al menos en. NET 4). –

2

Esto se puede lograr con la disposición de la tabla por defecto para el StatusStrip con sólo poner otra etiqueta entre la etiqueta actual y su progressBar y establezca la propiedad de Primavera en true.

+0

Un comentario sobre por qué me marcaron sería útil. –

+0

Gracias: esta es la respuesta correcta si desea más de una etiqueta alineada a la derecha. No tengo idea de por qué esto se hubiera reducido. –

0

Abra su Diseñador y configure this.toolStripStatusLabel1.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right;