<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
在我們使用Winform配合DevExpress進行開發表格時,表格中的涉及到百分比資料的內容除了顯示百分比的數位內容外,還希望搭配顯示進度條效果(且低於百分之60的內容用紅色表示不合格,高於百分之60的用綠色表示),這樣百分比的顯示效果更加清晰直觀。
#region 給表格指定列繪製進度條 /// <summary> /// 給指定列繪製進度條 /// </summary> /// <param name="gridView">GridView控制元件</param> /// <param name="columnFieldName">需繪製進度條列的欄位名稱</param> /// <param name="warningValue">警告值(用於區分不同的顏色)</param> /// <param name="beforeWaringValueColor">警告值前的進度條顏色</param> /// <param name="afterWaringValueColor">警告值後的進度條顏色</param> public static void DrawProgressBarToColumn(DevExpress.XtraGrid.Views.Grid.GridView gridView, string columnFieldName, double warningValue = 60, Brush beforeWaringValueColor = null, Brush afterWaringValueColor = null) { var column = gridView.Columns[columnFieldName]; if (column == null) return; column.AppearanceCell.Options.UseTextOptions = true; //設定該列顯示文字內容的位置(這裡預設居中) column.AppearanceCell.TextOptions.HAlignment = HorzAlignment.Center; //繪製事件方法(前提需要先註冊才能夠接收到引數使用) gridView.CustomDrawCell += (s, e) => { if (e.Column.FieldName == columnFieldName) { DrawProgressBar(e, warningValue, beforeWaringValueColor, afterWaringValueColor); e.Handled = true; DrawEditor(e); } }; } /// <summary> /// 繪製進度條 /// </summary> /// <param name="e">單元格繪製事件引數</param> /// <param name="warningValue">警告值(用於區分不同的顏色)</param> /// <param name="beforeWaringValueColor">警告值前的進度條顏色</param> /// <param name="afterWaringValueColor">警告值後的進度條顏色</param> public static void DrawProgressBar(DevExpress.XtraGrid.Views.Base.RowCellCustomDrawEventArgs e, double warningValue = 60, Brush beforeWaringValueColor = null, Brush afterWaringValueColor = null) { string tmpValue = e.CellValue.ToString(); float percent = 0; if (!string.IsNullOrEmpty(tmpValue)) { float.TryParse(tmpValue, out percent); } int width = 0; if (percent >2) { width = (int)(Math.Abs(percent / 100) * e.Bounds.Width); } else { width = (int)(Math.Abs(percent) * e.Bounds.Width); } Rectangle rect = new Rectangle(e.Bounds.X, e.Bounds.Y, width, e.Bounds.Height); Brush b = Brushes.Green; if (afterWaringValueColor != null) { b = afterWaringValueColor; } if (percent < warningValue) { if (beforeWaringValueColor == null) { b = Brushes.Red; } else { b = beforeWaringValueColor; } } e.Graphics.FillRectangle(b, rect); } /// <summary> /// 繪製單元格 /// </summary> /// <param name="e">單元格繪製事件引數</param> public static void DrawEditor(DevExpress.XtraGrid.Views.Base.RowCellCustomDrawEventArgs e) { DevExpress.XtraGrid.Views.Grid.ViewInfo.GridCellInfo cell = e.Cell as DevExpress.XtraGrid.Views.Grid.ViewInfo.GridCellInfo; Point offset = cell.CellValueRect.Location; DevExpress.XtraEditors.Drawing.BaseEditPainter pb = cell.ViewInfo.Painter as DevExpress.XtraEditors.Drawing.BaseEditPainter; AppearanceObject style = cell.ViewInfo.PaintAppearance; if (!offset.IsEmpty) cell.ViewInfo.Offset(offset.X, offset.Y); try { pb.Draw(new DevExpress.XtraEditors.Drawing.ControlGraphicsInfoArgs(cell.ViewInfo, e.Cache, cell.Bounds)); } finally { if (!offset.IsEmpty) { cell.ViewInfo.Offset(-offset.X, -offset.Y); } } } #endregion
注意:在使用給指定單元格繪製進度條方法時(如果數位都是小於1的那麼警告值也是需要小於1;如果是大於1的則按照需要設定即可)。
使用方法語法
DrawProgressBarToColumn(gridView元件名稱, 需要繪製進度條的單元格欄位, 警告值,警告值前的進度條顏色,警告值後的進度條顏色);
範例1
DrawProgressBarToColumn(gridView1, "Age", 0.6,Brushes.OrangeRed,Brushes.LawnGreen);
範例2
DrawProgressBarToColumn(gridView1, "Age", 0.6, new SolidBrush(Color.FromArgb(236, 65, 65)), new SolidBrush(Color.FromArgb(45, 115, 186)));
/// <summary> /// 設定表格指定單元格都使用百分比 /// </summary> /// <param name="gridView">gridView元件</param> /// <param name="columnName">列名稱</param> public static void SetPercentage(GridView gridView, string columnName) { if (gridView != null && gridView.Columns.Count > 0 && !string.IsNullOrEmpty(columnName)) { gridView.Columns[columnName].DisplayFormat.FormatType = FormatType.Numeric; gridView.Columns[columnName].DisplayFormat.FormatString = "P2"; } }
上面這個程式碼實現的是將小數轉為百分比顯示【比如將小數(0.3)使用後就轉為(30%)顯示】
/// <summary> /// 給表格指定單元格都保留2位小數後新增%號 /// </summary> /// <param name="gridView"></param> /// <param name="startColumnIndex"></param> /// <param name="endColumnIndex"></param> public static void SetResreserveTwoBitAndPercentageChar(GridView gridView, int startColumnIndex, int endColumnIndex) { if (gridView != null && gridView.Columns.Count > 0 && startColumnIndex > 0 && endColumnIndex > 0 && endColumnIndex <= gridView.Columns.Count) { for (int i = startColumnIndex; i <= endColumnIndex; i++) { gridView.Columns[i].DisplayFormat.FormatType = FormatType.Numeric; gridView.Columns[i].DisplayFormat.FormatString = $"{0:N2}'%'"; } } }
上面這個程式碼實現的是給數位新增百分號符號顯示【比如將小數(86.2356)使用後就轉為(86.24%)顯示】
以上就是C#實現給DevExpress中GridView表格指定列新增進度條的詳細內容,更多關於C# DevExpress GridView表格新增進度條的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45