我在一个C#窗体底部设置了一个StatusStrip
,其中包含一个标签,在标签中的文本显示正常,但当文本长度较长时,则完全不显示,我必须扩大窗体大小,然后它才会突然出现。是否可能在以下形式中将其显示出来:
This is a very long tex...
这样用户就知道应用正在显示某些内容,然后他可以自己扩大它,因为当它完全不可见时,对用户没有任何指示。
我在一个C#窗体底部设置了一个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
的Renderer
设置为自定义渲染器即可:
this.statusStrip1.Renderer = new CustomRenderer();
在下面的示例中,您可以看到ToolStripStatusLabel
的行为,它的Spring
属性设置为true
,并且其StatusStrip
使用CustomRenderer
:
Windows 8.1
上使用 VS 2013.4
和 .NET 4.5
创建的。看起来我们需要一个修复程序。 - Reza Aghaeithis.statusStrip1.LayoutStyle = System.Windows.Forms.ToolStripLayoutStyle.Table;
时才能正常工作。HorizontalStackWithOverflow
的布局样式将无法正常工作。 - Joe UhrenToolStripStatusLabel.Spring = True;
如果您这样设置,您将不会看到“...”,即使可用空间不足,文本仍然会显示。
在Visual Studio 2017中,接受的答案对我无效。这里提供另一个简单的解决方案。
将StatusStrip
的LayoutStyle
属性设置为Flow
。即:
statusStrip1.LayoutStyle= LayoutStyle.Flow;
设置
`statusStrip1.AutoSize= false;`