当文本太长时,StatusStrip标签不可见

时间:2016-07-02 00:21:07

标签: c# .net winforms statusbar toolstrip

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

    This is a very long tex...

因此,用户知道应用程序正在显示某些内容然后他可以自己扩展它,因为当它根本不可见时,它不会向用户显示任何内容。

3 个答案:

答案 0 :(得分:10)

您可以根据ToolStripProfessionalRenderer创建自定义渲染器并覆盖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);
    }
}

然后将StatusStrip的{​​{3}}设置为您的自定义渲染器就足够了:

this.statusStrip1.Renderer = new CustomRenderer();

在下面的示例中,您可以看到ToolStripStatusLabel的{​​{1}}属性设置为true且其StatusStrip使用CustomRenderer的行为:< / p>

Renderer

答案 1 :(得分:5)

如果您设置

ToolStripStatusLabel.Spring = True;
然后你就不会得到&#34; ...&#34;但即使可用空间不足,也会显示文本。

答案 2 :(得分:0)

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

 statusStrip1.LayoutStyle= LayoutStyle.Flow;

并设置

`statusStrip1.AutoSize= false;`