views:

2922

answers:

4

System.Windows.Forms.StatusStrip

I have added a StatusStrip to my winforms app, but I am having a few problems.

I would like to have a label anchored at the left and a progressBar anchored on the right in the StatusStrip, but I can't find a way to set these properties.

I then thought that I may need to create two statusStrips and anchor them on either side of the bottom of the form..that didn't pan out, besides that just doesn't feel right.

A: 

Did you tried the Alignment property of ProgresBarToolStripItem set to the Right?

TcKs
Alignment will not work alone with the default table layout.
Steven Behnke
Yes I did that didn't work
Brad
+10  A: 

Just set the Spring property on the label control to True and you should be good to go.

Sean Bright
If you do that you'd also want to change the label's default alignment from MiddleCenter to LeftCenter.
Steven Behnke
Thanks to both of you...perfect!
Brad
+4  A: 

What you have to do is set the alignment property of your progressbar to right. Then set the LayoutStyle of the StatusStrip to 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;
Steven Behnke
Please, God - there's got to be a way to set that up visually. :)
John Dunagan
There is. I was showing the designer code. Just find the properties in the property panel...
Steven Behnke
A: 

This can be achieved with the default table layout for the statusStrip by simply putting another label between your current label and your progressBar and set the Spring property to true.

dr.manhattan
A comment about why I got marked down would be helpful.
dr.manhattan