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

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

  This is a very long tex... 

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

您可以基于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的渲染器设置为自定义渲染器:

 this.statusStrip1.Renderer = new CustomRenderer(); 

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

在此处输入图像描述

如果你设置

 ToolStripStatusLabel.Spring = True; 

那么你就不会得到“……”,但即使可用空间不足,也会显示文字。

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

  statusStrip1.LayoutStyle= LayoutStyle.Flow; 

并设置

 `statusStrip1.AutoSize= false;`