Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Anchor ToolStripProgressBar to right of StatusBar(StatusStrip)

I have a form with a statusbar that has 2 ToolStripStatusLabels followed by a ToolStripProgressBar. I want the progressbar to be always anchored to the right of the statusbar - so when the window is resized/maximized, it should automatically move/repaint.

I thought this would be as simple as setting the 1st (left aligned) ToolStripStatusLabel's Spring property to true, so when the form is resized/increased in size, and there is more space available, the 1st ToolStripStatusLabel would fill up that space and automatically push the ToolStripProgressBar to the Right.

But not only does that not do what I want - the 1st ToolStripStatusLabel actually covers up both the 2nd StatusLabel and the ProgressBar, basically occupying the whole statusbar. None of the ToolStrip controls have Anchor or even a MinSize.

SO how do I :

  1. Anchor the ToolStripProgressBar to right of StatusBar(StatusStrip)
  2. Mix some fixed size items (e.g the ToolStripStatusLabel2 and ToolStripProgressBar) with a variably sized ToolStripStatusLabel1 that grows when there is extra space?

Thanks in advance for your time and help !

~IM

like image 851
IM. Avatar asked Oct 13 '09 20:10

IM.


3 Answers

For all who may be interested.. Anchor property is available, although in Code only (not in designer) ...but in any case, it DOES NOT work.. I left a BUG in Connect and got the generic WillNotFix with the Message seeming to indicate they'll consider it only for a major revision.

For some reason the "Spring" property seems to be erratic.. In my ultra-simpistic examples it is working, but in some others where I do some custom painting (but in Child Forms in a MDIPArent, with the latter having ht eStatusBar) it is not. In those cases, there's still a simple workaround though - in the ReSize event of the MDIParent Form (that has the statusbar) change the size of the StatusLabel to make it bigger in the same proprtion as th width-change, so it pushes the ProgressBar to the right edge of the StatusBar

like image 89
IM. Avatar answered Sep 17 '22 14:09

IM.


There's a simple solution. Make one fake ToolStripStatusLabel, empty the .Text and set .Spring = true;

After that, add your ToolStripProgressBar. Make sure the order is label first, then progressbar.

like image 17
Fa Wildchild Avatar answered Nov 09 '22 11:11

Fa Wildchild


  1. Set the StatusStrip, LayoutStyle property to HorizontalStackWithOverflow.
  2. Set the control Alignment to Right for the control you want to be to the right.
like image 12
knightgambit Avatar answered Nov 09 '22 11:11

knightgambit