I am trying to right align a control in a StatusStrip
. How can I do that?
I don't see a property to set on ToolStripItem
controls that specifies their physical alignment on the parent StatusStrip
.
Found it via MSDN forums almost immediately after posting :)
You can use a ToolStripLabel
to pseudo right align controls by setting the Text
property to string.Empty
and setting the Spring
property to true
. This will cause it to fill all of the available space and push all the controls to the right of the ToolStripLabel
over.
As an added note this is due to the fact that in the Win32 API a cell is either fixed width or fills the remaining space -1
int statwidths[] = {100, -1};
SendMessage(hStatus, SB_SETPARTS, sizeof(statwidths)/sizeof(int), (LPARAM)statwidths);
SendMessage(hStatus, SB_SETTEXT, 0, (LPARAM)"Hi there :)");
If memory serves me correctly you can have only one fill cell (-1) per statusbar.
You could also add a third middle cell and give this the fill property to get a more concistent looking StatusBar. Consistent because Messages has an inset to its left right where you'd expect it. A bit like the mspaint shot found on the MSDN page for StatusBars
I like the creative appreach though :D
For me it took two simple steps:
- Set
MyRightIntendedToolStripItem.Alignment
toRight
- Set
MyStatusStrip.LayoutStyle
toHorizontalStackWithOverflow
You can display the Button
at the end of the StatusStrip
by using the logic below.
- Add a
ToolstripLabel
to theStatusStrip
- Set text as
string.Empty
- Set
Padding
for theToolstripLabel
For example:
this.toolStripStatusLabel1.Padding = new Padding((int)(this.Size.Width - 75), 0, 0, 0);
Keep a Toolstrip label , set Spring property as true and for label align text in BottomLeft
I found that you can set the StatusStrip Layout to HorizontalStackWithOverflow. Then, for each control on the StatusStrip that you want on the right side, set the control Alignment to Right.
I like this better since you don't need any extra or dummy controls to align.
Set the RightToLeft tool strip property to True.
I find a general way to set a control's location in StatusStrip
.
You can display the Button at any position in the StatusStrip
by using the steps below.
- Add a ToolstripLabel to the StatusStrip
Set text as a suitable amount of space like
toolStripStatusLabel1.Text = " ";
If layout is not what you want, got to step 2 to change the amount of space in
toolStripStatusLabel1.Text
, else work has been done.
来源:https://stackoverflow.com/questions/509508/how-do-i-right-align-controls-in-a-statusstrip