如何在StatusStrip中正确对齐控件?


93

我正在尝试在中正确对齐控件StatusStrip。我怎样才能做到这一点?

我看不到要在ToolStripItem控件上设置的属性,该属性指定它们在父控件上的物理对齐方式StatusStrip

如何获得“消息”下拉列表以使其正确对齐?http://i.friendfeed.com/ed90b205f64099687db30553daa79d075f280b90


4
将标签标签工具栏项目的Spring属性设置为true。详细信息:dotnetperls.com/statusstrip (PS是的,我知道这是一个老问题。)
Nick Alexeev

Answers:


228

发布后几乎立即通过MSDN论坛找到了它:)

您可以使用ToolStripLabel通过设置模拟右对齐控件Text属性string.Empty和设置Spring属性true。这将导致它填充所有可用空间,并将所有控件推到ToolStripLabel上方。


28
这将工作如果StatusStrip.LayoutStyle == ToolStripLayoutStyle.Table(这是默认的)
AZ。

13
真好 两侧带有弹簧的StatusStripLabel似乎使控件居中
mcdon 2012

我希望有一种“真正的”方式来做到这一点,但这很奏效,谢谢。我不知道该Alignment属性会做什么,因为它在我的应用程序中什么都没做。
TheGateKeeper 2014年

2
我想知道Alignment属性是什么,我看不到任何此类属性。
TaW

这将只允许在带有“ Spring”标签的项之后出现一项,而其他项则不会出现,请改用@VBobCat方法。
Pablo CarrascoHernández

14

对我来说,它采取了两个简单的步骤:

  1. 设置MyRightIntendedToolStripItem.AlignmentRight
  2. 设置MyStatusStrip.LayoutStyleHorizontalStackWithOverflow

5

另外请注意,这是由于以下事实:在Win32 API中,单元格为固定宽度或填充剩余空间-1

int statwidths[] = {100, -1};

SendMessage(hStatus, SB_SETPARTS, sizeof(statwidths)/sizeof(int), (LPARAM)statwidths);
SendMessage(hStatus, SB_SETTEXT, 0, (LPARAM)"Hi there :)");

如果记忆正确地为我服务,则每个状态栏只能有一个填充单元(-1)。

您还可以添加第三个中间单元格,并为其指定fill属性,以使状态栏看起来更加一致。之所以一致,是因为Messages在您期望的位置在其左右两侧都有一个插图。有点像在MSDN页面上为StatusBars找到的mspaint镜头

我喜欢创意的广告触手可及的:D


这对于StatusBars有效,对于StatusStrips无效,后者是完全托管的代码。
Filip Navara

3

您可以使用以下逻辑Button在末尾显示StatusStrip

  1. 将添加ToolstripLabelStatusStrip
  2. 将文字设置为 string.Empty
  3. 设置PaddingToolstripLabel

例如:

this.toolStripStatusLabel1.Padding = new Padding((int)(this.Size.Width - 75), 0, 0, 0);

添加第三个中间单元格,并为此填充属性, 我看不到任何此类属性。
TaW

2

保留Toolstrip标签,将Spring属性设置为true,并在BottomLeft中使标签对齐文本


1

我发现您可以将StatusStrip布局设置为Horizo​​ntalStackWithOverflow。然后,对于右侧要在StatusStrip上的每个控件,将控件Alignment设置为Right。

我会更好,因为您不需要任何额外的或虚拟的控件即可对齐。


-2

我找到了一种在中设置控件位置的一般方法StatusStrip。您可以StatusStrip使用以下步骤在任意位置显示按钮。

  1. 将工具条标签添加到StatusStrip
  2. 将文本设置为适当的空间,例如

    toolStripStatusLabel1.Text =“”;

  3. 如果不是您想要的布局,请转到步骤2更改中的空间量toolStripStatusLabel1.Text,否则工作已经完成。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.