文本太长时 StatusStrip 标签不可见

StatusStrip label not visible when text too long

我有一个 StatusStrip 停靠在 C# 窗体的底部,它包含一个标签,其中的文本显示正常,除非文本长度较长,否则它根本不显示,我必须加宽表格,然后它突然出现。是否可以用下面的形式显示:

    This is a very long tex...

让用户知道应用程序正在显示一些东西,然后他可以自己加宽它,因为当它根本不可见时,它不会向用户表明任何东西。

您可以根据 ToolStripProfessionalRenderer and override OnRenderItemText 方法创建自定义渲染器并使用省略号绘制文本:

public class CustomRenderer : ToolStripProfessionalRenderer
{
    protected override void OnRenderItemText(ToolStripItemTextRenderEventArgs e)
    {
        if (e.Item is ToolStripStatusLabel)
            TextRenderer.DrawText(e.Graphics, e.Text, e.TextFont,
                e.TextRectangle, e.TextColor, Color.Transparent,
                e.TextFormat | TextFormatFlags.EndEllipsis);
        else
            base.OnRenderItemText(e);
    }
}

然后将 StatusStripRenderer 设置为自定义渲染器就足够了:

this.statusStrip1.Renderer = new CustomRenderer();

在下面的示例中,您可以看到 ToolStripStatusLabel 的行为 Spring 属性 设置为 true 并且其 StatusStrip 使用 CustomRenderer:

2017 年 Visual Studio,接受的答案对我不起作用。所以这是另一个简单的解决方案。 将 StatusStrip 的 LayoutStyle 属性 设置为 Flow。即:

 statusStrip1.LayoutStyle= LayoutStyle.Flow;

并设置

`statusStrip1.AutoSize= false;`

如果你设置

ToolStripStatusLabel.Spring = True;

那么您将不会得到“...”,但即使可用 space 不足,文本也会显示。