博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
自动为DEV GridView控件添加SizeChanged事件
阅读量:5952 次
发布时间:2019-06-19

本文共 1637 字,大约阅读时间需要 5 分钟。

实现gdv设置的抽象对象,不用每个gdv控件都添加sizechanged事件,只需执行gdc绑定sql函数,在其中会自动添加SizeChanged事件。

 

//2016.5.13 by sngk

        //根据控件大小自动调整GridView列宽模式,尽量使列充满

        //2016.11.19 实现自动添加sizechanged事件

        //该函数只执行一次,在赋值时

        public static void BestFitGridViewColumnsWidth(DevExpress.XtraGrid.GridControl gdc,string sql, int hidecols=0)

        {

            DevExpress.XtraGrid.Views.Grid.GridView gdv = (DevExpress.XtraGrid.Views.Grid.GridView)gdc.Views[0];

 

            //绑定数据

            gdv.GridControl.DataSource = DBFactorySingleton.GetInstance().Factory.GetDataTable(sql);

 

            for (int i = 0; i < hidecols;i++ )

                gdv.Columns[i].Visible = false;

     //添加事件

            gdc.SizeChanged += BestFitDevGrid_Size_Changed_Event;

 

            //虽然每次窗体变化时都会激发sizechange事件,但窗体第一次load时不会触发,所以加一句调整语句

            BestFitGridViewWidth(gdv);

           

        }

 

        //2016.11.19 技术进步,后台为控件添加事件

        public static void BestFitDevGrid_Size_Changed_Event(object sender, EventArgs e)

        {

            //获得gdc对象

            DevExpress.XtraGrid.GridControl gdc=(DevExpress.XtraGrid.GridControl)sender;

 

            //取得gdc的第一个gdv对象

            DevExpress.XtraGrid.Views.Grid.GridView gdv = (DevExpress.XtraGrid.Views.Grid.GridView)gdc.Views[0];

 

            //设置最适合列宽的判断行数

            gdv.BestFitMaxRowCount = 500;

 

            BestFitGridViewWidth(gdv);           

        }

 

        //根据窗体大小判断gdv最合适大小

        public static void BestFitGridViewWidth(DevExpress.XtraGrid.Views.Grid.GridView gdv)

        {

            //先设置最小列宽

            gdv.BestFitColumns();

 

            //获取所有列总最小宽度

            int tt = 0;

            for (int i = 0; i < gdv.Columns.Count; i++)

            {

                if (gdv.Columns[i].Visible)

                    tt += gdv.CalcColumnBestWidth(gdv.Columns[i]);

            }

 

            //如果有指示列,加上其宽度

            if (gdv.OptionsView.ShowIndicator)

                tt += gdv.IndicatorWidth;

 

            //根据宽度调整列显示模式

            if (tt < gdv.ViewRect.Width)

                gdv.OptionsView.ColumnAutoWidth = true;

            else

                gdv.OptionsView.ColumnAutoWidth = false;

        }

 

转载于:https://www.cnblogs.com/mol1995/p/6081271.html

你可能感兴趣的文章
Harmonic Number (II)
查看>>
长连接、短连接、长轮询和WebSocket
查看>>
day30 模拟ssh远程执行命令
查看>>
做错的题目——给Array附加属性
查看>>
Url.Action取消字符转义
查看>>
JQuery选择器大全
查看>>
Gamma阶段第三次scrum meeting
查看>>
python3之装饰器修复技术@wraps
查看>>
[考试]20150606
查看>>
Javascript_备忘录5
查看>>
Can’t create handler inside thread that has not called Looper.prepare()
查看>>
敏捷开发方法综述
查看>>
Hadoop数据操作系统YARN全解析
查看>>
修改数据库的兼容级别
查看>>
Windows下同时安装两个版本Jdk
查看>>
uoj#228. 基础数据结构练习题(线段树)
查看>>
JS键盘事件监听
查看>>
ios开发周期之--(向上,向下,四舍五入)取整
查看>>
加油!
查看>>
拦截导弹问题(动态规划)
查看>>