问题
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
.
How do I get Messages drop down to be right aligned? http://i.friendfeed.com/ed90b205f64099687db30553daa79d075f280b90
回答1:
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.
回答2:
For me it took two simple steps:
- Set
MyRightIntendedToolStripItem.Alignment
toRight
- Set
MyStatusStrip.LayoutStyle
toHorizontalStackWithOverflow
回答3:
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
回答4:
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);
回答5:
Keep a Toolstrip label , set Spring property as true and for label align text in BottomLeft
回答6:
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.
回答7:
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.
回答8:
Set the RightToLeft tool strip property to True.
来源:https://stackoverflow.com/questions/509508/how-do-i-right-align-controls-in-a-statusstrip