Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何右对齐StatusStrip中的控件?_C#_Winforms_Statusstrip - Fatal编程技术网

C# 如何右对齐StatusStrip中的控件?

C# 如何右对齐StatusStrip中的控件?,c#,winforms,statusstrip,C#,Winforms,Statusstrip,我正在尝试右对齐一个控件。我该怎么做 我没有看到要在ToolStripItem控件上设置的属性,该属性指定它们在父StatusStrip上的物理对齐方式 几乎在发布后立即通过MSDN论坛找到:) 通过将Text属性设置为string.Empty并将Spring属性设置为true,可以使用伪右对齐控件。这将导致它填充所有可用空间,并将所有控件推到上方的右侧。作为补充说明,这是因为在Win32 API中,单元格的宽度是固定的,或者填充了剩余空间-1 int statwidths[] = {100,

我正在尝试右对齐一个控件。我该怎么做

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


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


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

作为补充说明,这是因为在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属性赋予该单元格,以获得外观更简洁的状态栏。一致,因为消息在其左右两侧的预期位置有一个插图。有点像在地图上找到的mspaint镜头


我喜欢创造性的方法:D

您可以使用下面的逻辑在
状态条
的末尾显示
按钮

  • ToolstripLabel
    添加到
    StatusStrip
  • 将文本设置为
    string.Empty
  • ToolstripLabel
  • 例如:

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

    将RightToLeft tool strip属性设置为True。

    保留Toolstrip标签,将Spring属性设置为True,并将label align text设置为BottomLeft

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

  • 将MyRightIntendedToolStripItem.Alignment设置为右侧
  • 将MyStatusStrip.LayoutStyle设置为水平堆栈溢出

  • 我发现可以将StatusStrip布局设置为HorizontalStackWithOverflow。 然后,对于要位于右侧的StatusStrip上的每个控件,将控件对齐设置为右侧


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

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

    创建一个Spring属性设置为true的标签工具栏项。详细信息:(是的,我知道这是一个老问题。)只有当
    StatusStrip.LayoutStyle==ToolStripLayoutStyle.Table
    (默认值)很好时,这才有效。一个两边都有弹簧的StatusStripLabel显示在控件的中心。我希望有一种“真正”的方法来实现这一点,但这很有效,谢谢。我想知道
    Alignment
    属性做了什么,因为它在我的应用程序中没有做任何事情。我想知道Alignment属性做了什么,我没有看到任何这样的属性。这将只允许在带有“Spring”的标签后有一个项,其他项将不会出现,改为使用@VBobCat方法。添加第三个中间单元格并为其指定fill属性。我看不到任何此类属性。这对StatusBars有效,对StatusStrips无效,因为StatusStrips是完全受管理的代码。此答案已给出。当你回答这样一个有很多答案的老问题时,你需要先检查一下。