自动为DEV GridView控件添加SizeChanged事件
實(shí)現(xiàn)gdv設(shè)置的抽象對(duì)象,不用每個(gè)gdv控件都添加sizechanged事件,只需執(zhí)行g(shù)dc綁定sql函數(shù),在其中會(huì)自動(dòng)添加SizeChanged事件。
?
//2016.5.13 by sngk
??????? //根據(jù)控件大小自動(dòng)調(diào)整GridView列寬模式,盡量使列充滿
??????? //2016.11.19 實(shí)現(xiàn)自動(dòng)添加sizechanged事件
??????? //該函數(shù)只執(zhí)行一次,在賦值時(shí)
??????? 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];
?
??????????? //綁定數(shù)據(jù)
??????????? 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;
?
??????????? //雖然每次窗體變化時(shí)都會(huì)激發(fā)sizechange事件,但窗體第一次load時(shí)不會(huì)觸發(fā),所以加一句調(diào)整語(yǔ)句
????????? ??BestFitGridViewWidth(gdv);
???????????
??????? }
?
??????? //2016.11.19 技術(shù)進(jìn)步,后臺(tái)為控件添加事件
??????? public static void BestFitDevGrid_Size_Changed_Event(object sender, EventArgs e)
??????? {
??????????? //獲得gdc對(duì)象
??????????? DevExpress.XtraGrid.GridControl gdc=(DevExpress.XtraGrid.GridControl)sender;
?
??????????? //取得gdc的第一個(gè)gdv對(duì)象
??????????? DevExpress.XtraGrid.Views.Grid.GridView gdv = (DevExpress.XtraGrid.Views.Grid.GridView)gdc.Views[0];
?
??????????? //設(shè)置最適合列寬的判斷行數(shù)
??????????? gdv.BestFitMaxRowCount = 500;
?
??????????? BestFitGridViewWidth(gdv);???????????
??????? }
?
??????? //根據(jù)窗體大小判斷gdv最合適大小
??????? public static void BestFitGridViewWidth(DevExpress.XtraGrid.Views.Grid.GridView gdv)
??????? {
??????????? //先設(shè)置最小列寬
??????????? 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;
?
??????????? //根據(jù)寬度調(diào)整列顯示模式
??????????? if (tt < gdv.ViewRect.Width)
??????????????? gdv.OptionsView.ColumnAutoWidth = true;
??????????? else
??????????????? gdv.OptionsView.ColumnAutoWidth = false;
??????? }
?
轉(zhuǎn)載于:https://www.cnblogs.com/mol1995/p/6081271.html
總結(jié)
以上是生活随笔為你收集整理的自动为DEV GridView控件添加SizeChanged事件的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用WebSocket绕过广告屏蔽插件
- 下一篇: 雷兽的数据库CAP乱谈之(一)阐述