You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何阻止System.Windows.Forms.Label控件的文本自动换行?

解决System.Windows.Forms.Label文本自动换行问题

方案一:使用AutoEllipsis属性(推荐)

这是WinForms内置的最简便方案,既能阻止换行,又能在文本超出控件宽度时显示省略号提示内容被截断:

  • 确保Label的AutoSize属性设为false(满足你固定90x20尺寸的需求)
  • 将AutoEllipsis属性设为true
  • 保持Size为90,20,TextAlign按需设置(比如TopLeft)

设置完成后,文本会始终在一行内显示,超出宽度的部分会被省略号替代,完全不会触发换行,也不会存在被隐藏的第二行内容,同时控件宽度固定为90,不会覆盖右侧对象。

方案二:手动截断文本(无省略号需求时)

如果不需要显示省略号,只想直接截断超出宽度的文本,可以通过代码计算可显示的文本长度后截取:

// 在设置Label文本或控件尺寸变化时执行
string originalText = "你的超长文本内容";
Size maxSize = new Size(90, int.MaxValue);
// 计算文本在当前Font下的所需尺寸
Size textSize = TextRenderer.MeasureString(originalText, label1.Font, maxSize, TextFormatFlags.NoWrap);

// 如果文本宽度超过控件宽度,逐步截断文本
if (textSize.Width > label1.Width)
{
    string truncatedText = originalText;
    while (TextRenderer.MeasureString(truncatedText, label1.Font, maxSize, TextFormatFlags.NoWrap).Width > label1.Width && truncatedText.Length > 0)
    {
        truncatedText = truncatedText.Substring(0, truncatedText.Length - 1);
    }
    label1.Text = truncatedText;
}
else
{
    label1.Text = originalText;
}

注意要引用System.Windows.Forms命名空间,计算时需传入TextFormatFlags.NoWrap确保按不换行规则计算宽度。

额外注意事项

  • 不要通过修改高度隐藏换行内容,这属于治标不治本,文本实际仍会换行绘制,可能引发布局或渲染问题
  • 确认Label的WordWrap属性设为false(默认值为false,若之前修改过需改回)

内容的提问来源于stack exchange,提问作者jerdub1993

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 10:50:42