【问题标题】:How do I right align controls in a StatusStrip?如何右对齐 StatusStrip 中的控件?
【发布时间】:2010-10-05 07:14:59
【问题描述】:

我正在尝试右对齐 StatusStrip 中的控件。我该怎么做?

我没有看到要在 ToolStripItem 控件上设置的属性来指定它们在父 StatusStrip 上的物理对齐方式。

How do I get Messages drop down to be right aligned? http://i.friendfeed.com/ed90b205f64099687db30553daa79d075f280b90

【问题讨论】:

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

标签: c# winforms statusstrip


【解决方案1】:

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

您可以通过将Text 属性设置为string.Empty 并将Spring 属性设置为true 来使用ToolStripLabel 来伪右对齐控件。这将导致它填满所有可用空间并将所有控件推到ToolStripLabel 的右侧。

【讨论】:

  • 如果StatusStrip.LayoutStyle == ToolStripLayoutStyle.Table(这是默认值)有效
  • 不错。两侧带有 Spring 的 StatusStripLabel 似乎使控件居中
  • 我希望有一种“真实”的方式来做到这一点,但这很有效,谢谢。我想知道 Alignment 属性有什么作用,因为它在我的应用程序中没有做任何事情。
  • 我想知道 Alignment 属性有什么作用我没有看到任何这样的属性。
  • 这将只允许在带有“Spring”的标签后面的一项,其他不会出现,请改用@VBobCat方法。
【解决方案2】:

对我来说,只需两个简单的步骤:

  1. MyRightIntendedToolStripItem.Alignment 设置为Right
  2. MyStatusStrip.LayoutStyle 设置为HorizontalStackWithOverflow

【讨论】:

    【解决方案3】:

    作为补充说明,这是因为在 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)。

    您还可以添加第三个中间单元格并为其赋予填充属性以获得更一致的状态栏。一致,因为 Messages 在您所期望的左右位置有一个插图。有点像MSDN page for StatusBars上的 mspaint 截图

    不过,我喜欢创造性的方法:D

    【讨论】:

    • 这对 StatusBars 有效,对完全托管代码的 StatusStrips 无效。
    【解决方案4】:

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

    1. ToolstripLabel 添加到StatusStrip
    2. 将文本设置为string.Empty
    3. Padding 设置为ToolstripLabel

    例如:

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

    【讨论】:

    • 添加第三个中间单元格并给它填充属性我没有看到任何这样的属性。
    【解决方案5】:

    保留一个工具条标签,将 Spring 属性设置为 true 并为标签在 BottomLeft 中对齐文本

    【讨论】:

      【解决方案6】:

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

      我更喜欢这个,因为您不需要任何额外或虚拟控件来对齐。

      【讨论】:

        【解决方案7】:

        如果将状态条标签控件的 Spring 属性设置为 true,则该标签会占用 StatusStrip 中其他控件未使用的任何空间。

        【讨论】:

        • 这个答案已经给出。在回答这么多答案的老问题时,您需要先检查一下。
        【解决方案8】:

        将 RightToLeft 工具条属性设置为 True。

        【讨论】:

          猜你喜欢
          • 2015-07-10
          • 2013-08-23
          • 2017-07-28
          • 1970-01-01
          • 1970-01-01
          • 2018-03-09
          • 1970-01-01
          • 2012-07-18
          • 1970-01-01
          相关资源
          最近更新 更多