文檔首頁>>DevExpress使用教程>>DevExpress使用教程:向GridControl添加進度條控件
DevExpress使用教程:向GridControl添加進度條控件
本文將為大家介紹如何在DevExpress GridControl中添加進度條控件。
【DXperience Universal Suite下載】
首先可以使用 DevExpress GridControl 自帶的進度條控件。
但是我要用一個方法來設置所有的單元格進度,而不是每個單元格都要設置一遍,同時我想要根據進度值不同,進度條顯示不同的顏色。
那么就要自己手動的編寫代碼來完成了。
1 、繪制一個單元格進度條形狀,當進度小于50%時顯示為紅色。
public void DrawProgressBar(DevExpress.XtraGrid.Views.Base.RowCellCustomDrawEventArgs e) { string s = e.CellValue as string; s = s.Substring(0, e.CellValue.ToString().Length - 1); decimal percent = Convert.ToDecimal(s); int width = (int)(100 * Math.Abs(percent /100 ) * e.Bounds.Width / 100); Rectangle rect = new Rectangle(e.Bounds.X, e.Bounds.Y, width, e.Bounds.Height); Brush b = Brushes.Green; if (percent < 50) { b = Brushes.Red; } e.Graphics.FillRectangle(b, rect); }
2、點擊 GridView 展開觸發(fā)事件
private void gridView1_CustomDrawCell(object sender, DevExpress.XtraGrid.Views.Base.RowCellCustomDrawEventArgs e) { if (e.Column.FieldName == "CLASSPACE") { DrawProgressBar(e); e.Handled = true; DrawEditor(e); } }
3、上面兩段代碼其實效果已經出來了,只不過有一些瑕疵,單元格只顯示數值,而不顯示進度條(當點擊單元格時數值會消失),那么需要我們再來手動的編寫一段代碼用來處理當單元格觸發(fā)時一些操作。
private void DrawEditor(DevExpress.XtraGrid.Views.Base.RowCellCustomDrawEventArgs e) { GridCellInfo cell = e.Cell as GridCellInfo; Point offset = cell.CellValueRect.Location; BaseEditPainter pb = cell.ViewInfo.Painter as BaseEditPainter; AppearanceObject style = cell.ViewInfo.PaintAppearance; if (!offset.IsEmpty) cell.ViewInfo.Offset(offset.X, offset.Y); try { pb.Draw(new ControlGraphicsInfoArgs(cell.ViewInfo, e.Cache, cell.Bounds)); } finally { if(!offset.IsEmpty) { cell.ViewInfo.Offset(-offset.X, -offset.Y); } } }
同時將單元格設置為不可編輯狀態(tài)。
附最后顯示效果 :
出處:http://www.cnblogs.com/Albin/