我有一个StatusStrip
停靠在C#表格的底部,它包含一个标签,其中的文字显示正常,除非有更长的文字然后它根本不显示,我必须加宽表格然后它突然出现了。是否可以在下面的表格中显示:
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);
}
}
然后就足以将Renderer
的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;`