自动为DEV GridView控件添加SizeChanged事件
實現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
總結
以上是生活随笔為你收集整理的自动为DEV GridView控件添加SizeChanged事件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用WebSocket绕过广告屏蔽插件
- 下一篇: java配置运行环境和配置