文本太长时 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);
}
}
然后将 StatusStrip
的 Renderer
设置为自定义渲染器就足够了:
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 不足,文本也会显示。
我有一个 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);
}
}
然后将 StatusStrip
的 Renderer
设置为自定义渲染器就足够了:
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 不足,文本也会显示。