博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
DevExpress GridControl 单元格添加进度条(ProgressBar)
阅读量:6244 次
发布时间:2019-06-22

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

首先可以使用DevExpress GridControl 自带的进度条控件.

但是我要用一个方法来设置所以的单元格进度,而不是每个单元格都要设置一遍,同时我想要根据进度值不同,进度条显示不同的颜色.

那么就要自己手动的编写代码来完成了.

1 : 绘制一个单元格进度条 形状   当进度小于50%时显示为红色.

1  public void DrawProgressBar(DevExpress.XtraGrid.Views.Base.RowCellCustomDrawEventArgs e) 2         { 3             string s = e.CellValue as string; 4              s = s.Substring(0, e.CellValue.ToString().Length - 1); 5              decimal percent = Convert.ToDecimal(s);  6             int width = (int)(100 * Math.Abs(percent /100 ) * e.Bounds.Width / 100); 7             Rectangle rect = new Rectangle(e.Bounds.X, e.Bounds.Y, width, e.Bounds.Height); 8             Brush b = Brushes.Green; 9             if (percent < 50)10             {11                 b = Brushes.Red;12             }13             e.Graphics.FillRectangle(b, rect);14         }

2 :  点击 GridView 展开触发事件

1  private void gridView1_CustomDrawCell(object sender, DevExpress.XtraGrid.Views.Base.RowCellCustomDrawEventArgs e) 2         { 3             if (e.Column.FieldName == "CLASSPACE") 4             { 5                 DrawProgressBar(e); 6  7                 e.Handled = true; 8  9                 DrawEditor(e); 10             } 11         }

 

3 : 上面两段代码其实效果已经出来了,只不过有一些瑕疵,单元格只显示数值,而不显示进度条,(当点击单元格时数值会消失),那么需要我们再来手动的编写一段代码用来处理当单元格触发时一些操作.

代码:

1   private void DrawEditor(DevExpress.XtraGrid.Views.Base.RowCellCustomDrawEventArgs e) 2         { 3             GridCellInfo cell = e.Cell as GridCellInfo; 4             Point offset = cell.CellValueRect.Location; 5             BaseEditPainter pb = cell.ViewInfo.Painter as BaseEditPainter; 6             AppearanceObject style = cell.ViewInfo.PaintAppearance; 7             if (!offset.IsEmpty) 8                 cell.ViewInfo.Offset(offset.X, offset.Y); 9             try10             {11                 pb.Draw(new ControlGraphicsInfoArgs(cell.ViewInfo, e.Cache, cell.Bounds));12             }13             finally14             {15                 if(!offset.IsEmpty)16                 {17                     cell.ViewInfo.Offset(-offset.X, -offset.Y);18                 }19             }20         }

 

同时 将 单元格设置为不可编辑状态.

 

附 最后显示效果 :

转载于:https://www.cnblogs.com/DeepLearing/p/3910170.html

你可能感兴趣的文章
对于常见未得到支持操作的理解
查看>>
Win7 下Maple驱动问题解决方案
查看>>
hibernate 不输出sql参数的解决
查看>>
Netty的异步事件驱动(ChannelFuture)
查看>>
PostgreSQL数据类型-货币类型
查看>>
eclipse.ini、flashbuilder.ini内存设置和堆栈非堆栈问题
查看>>
线程下变量-原子操作 __sync_fetch_and_add等等
查看>>
Java 远程调试
查看>>
android 一个小例子说明handler和AlertDialog的简单使用
查看>>
解密Redis持久化
查看>>
[转载]使用 CTTeleyphonyCenter 截获来去电及短信消息
查看>>
linux 防火墙命令
查看>>
okhttp3使用
查看>>
android 6.0 权限设置详解
查看>>
php面向对象编程
查看>>
Apache HTTPD 正向(forward)和反向(reverse)代理
查看>>
工厂模式的jdbc
查看>>
十三周三次课(6月21日)
查看>>
linux目录结构详细介绍
查看>>
分享微信开发Html5轻游戏中的几个坑
查看>>