自动调整文本字体以适应单元格大小

在数据显示时,经常会遇到文本过长以至于超出了可用的显示范围,在多数需求中我们希望能够自动调整文本的字体大小,尽量在可用的范围内显示全部文本。本文就结合Spread for WinForms 中的自定义单元格类型来实现这一功能。

发布于 2012/12/07 00:00

在数据显示时,经常会遇到文本过长以至于超出了可用的显示范围,在多数需求中我们希望能够自动调整文本的字体大小,尽量在可用的范围内显示全部文本。本文就结合Spread for WinForms 中的自定义单元格类型来实现这一功能。

首先,我们需要创建一个自定义单元格类型,代码如下:

    private class CTextCellType : FarPoint.Win.Spread.CellType.TextCellType
    {            
        public override void PaintCell(Graphics g, Rectangle r, FarPoint.Win.Spread.Appearance appearance, object value, bool isSelected, bool isLocked, float zoomFactor)
        {
            if (value != null)
            {
                Font font = appearance.Font;

                while (g.MeasureString(value.ToString(),font).Width >= r.Width && font.Size >= 5)
                {
                    font = new Font(font.FontFamily, font.Size - 0.2f, font.Style);
                }
                    
                appearance.Font = font;
            }

            base.PaintCell(g, r, appearance, value, isSelected, isLocked, zoomFactor);
        }
    }

 

然后,将 CTextCellType 单元格类型应用到Spread中,代码如下:

    private void Form1_Load(object sender, EventArgs e)
    {
        fpSpread1.ActiveSheet.DefaultStyle.CellType = new CTextCellType();
    }

 

运行截图:

 

关于葡萄城

葡萄城是专业的软件开发技术和低代码平台提供商,以“赋能开发者”为使命,致力于通过表格控件、低代码和BI等各类软件开发工具和服务,一站式满足开发者需求,帮助企业提升开发效率并创新开发模式。葡萄城开发技术始于1980年,40余年来始终聚焦软件开发技术,有深厚的技术积累和丰富的产品线。是业界能够同时赋能软件开发和低代码开发的企业。凭借过硬的产品能力、活跃的开发者社区和丰富的伙伴生态,与超过3000家合作伙伴紧密合作,产品广泛应用于信息和软件服务、制造、交通运输、建筑、金融、能源、教育、公共管理等支柱产业。

推荐相关案例
推荐相关资源
关注微信
葡萄城社区二维码

关注“葡萄城社区”

加微信获取技术资讯

加微信获取技术资讯

想了解更多信息,请联系我们, 随时掌握技术资源和产品动态