2009-01-14 10 views
11

Envisager System.Windows.Forms.StatusStrip. J'ai ajouté un StatusStrip à mon application Windows Forms, mais j'ai quelques problèmes. Je souhaite avoir une étiquette ancrée à gauche et une barre de progression ancrée à droite dans la barre d'état, mais je ne trouve pas un moyen de définir ces propriétés. J'ai alors pensé que je pourrais avoir besoin de créer deux StatusStrips et de les ancrer de chaque côté du bas du formulaire ... Cela n'a pas marché; à part ça, ça ne va pas.Utilisation de StatusStrip en C#

Répondre

27

Réglez simplement la propriété Spring sur le contrôle d'étiquette sur True et vous devriez être prêt à l'emploi.

+7

Si vous faites cela, vous voulez également changer l'alignement par défaut de l'étiquette de MiddleCenter à LeftCenter. –

+0

Merci à vous deux ... parfait! – Brad

0

Avez-vous essayé la propriété Alignment de ProgresBarToolStripItem définie sur Right?

+0

L'alignement ne fonctionnera pas seul avec la disposition de table par défaut. –

+0

Oui, je l'ai fait qui ne fonctionnait pas – Brad

7

Ce que vous devez faire est de définir la propriété d'alignement de votre barre de progression à droite. Puis définissez le LayoutStyle de StatusStrip à 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

S'il vous plaît, Dieu - il doit y avoir un moyen de régler cela visuellement. :) –

+0

Il y a. Je montrais le code du concepteur. Il suffit de trouver les propriétés dans le panneau des propriétés ... –

+1

En fait, la propriété 'Alignment' n'est pas disponible dans la grille des propriétés de la classe' ToolStripStatusLabel' (pour une raison quelconque, elle possède l'attribut 'Browsable (false)', au moins dans. NET 4). –

2

Ceci peut être réalisé avec la mise en page de table par défaut pour le StatusStrip en mettant simplement une autre étiquette entre votre étiquette actuelle et votre progressBar et définissez la propriété Spring true.

+0

Un commentaire sur les raisons pour lesquelles je me suis fait remarquer serait utile. –

+0

Merci - c'est la réponse correcte si vous voulez plus d'un label aligné à droite. Aucune idée pourquoi cela aurait été marqué. –

0

Ouvrez votre Designer et définissez this.toolStripStatusLabel1.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right;