devexpress 中advBandedGridView内容自动换行和调整自适应行高

首先是自动换行,可以创建一个repositoryItemMemoEdit 并绑定到需要换行的列中

再设置一下repositoryItemMemoEdit高度自适应,这样子就完成了自动换行了

 repositoryItemMemoEdit1.AutoHeight = true;

之后需要使用事件advBandedGridView1_CalcRowHeight。这个事件是让我们可以单独设置行高。因为advBandedGridView没有rowautoheight所以需要我们自己设置

代码如下

//获得字体的宽度和高度。
            Graphics graphics = CreateGraphics();
            SizeF sizef = graphics.MeasureString(advBandedGridView1.GetRowCellValue(e.RowHandle, "测试").ToString(), advBandedGridView1.Appearance.Row.Font);
            //根据字体的宽度除以这列的宽度计算得出需要几行。使用Ceiling把小数都进一位成整数
            double doub = Math.Ceiling(sizef.Width / advBandedGridView1.Columns["测试"].Width);
            //设置行高为需要几行乘以这个字体的高度
            e.RowHeight = (int)(doub*sizef.Height);

完整代码

using DevExpress.XtraGrid.Views.Grid.ViewInfo;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace 文件管理
{
    public partial class Form1 : DevExpress.XtraEditors.XtraForm
    {
        public Form1()
        {
            InitializeComponent();
            //添加测试数据并绑定数据源
            DataTable dt = new DataTable();
            dt.Columns.Add("测试");
            dt.Columns.Add("测试1");
            dt.Rows.Add("谁谁谁时尚所所所所所所所所所所所所所所所所所所所所所所所所所所所所所所所所所所所所所所所所所所所所所所s", "ssssssssss");
            dt.Rows.Add("ssss","wwwww");
            dt.Rows.Add("谁谁谁wwwwwwww时尚所所2所所所所所所所所所所所所所所所所所所所所所所所所所所所所所所所所所所所所所所所所所所所所s", "siiiiiiihiiiiiii");
            gridControl1.DataSource = dt;
            //自适应高度
            repositoryItemMemoEdit1.AutoHeight = true;
        }
        private void advBandedGridView1_CalcRowHeight(object sender, DevExpress.XtraGrid.Views.Grid.RowHeightEventArgs e)
        {
            //获得字体的宽度和高度。
            Graphics graphics = CreateGraphics();
            SizeF sizef = graphics.MeasureString(advBandedGridView1.GetRowCellValue(e.RowHandle, "测试").ToString(), advBandedGridView1.Appearance.Row.Font);
            //根据字体的宽度除以这列的宽度计算得出需要几行。使用Ceiling把小数都进一位成整数
            double doub = Math.Ceiling(sizef.Width / advBandedGridView1.Columns["测试"].Width);
            //设置行高为需要几行乘以这个字体的高度
            e.RowHeight = (int)(doub*sizef.Height);
        }
    }
}

Demo下载地址https://download.csdn.net/download/qq_38977099/10872914

大家如果有问题可以
Console.WriteLine(”加群“+"537905238");

posted @ 2018-12-24 16:37  Sqsdhc  阅读(307)  评论(0)    收藏  举报