• <menu id="w2i4a"></menu>
  • logo DevExpress使用教程
    文檔首頁>>DevExpress使用教程>>DevExpress使用教程:向GridControl添加進度條控件

    DevExpress使用教程:向GridControl添加進度條控件


    本文將為大家介紹如何在DevExpress GridControl中添加進度條控件。

    DXperience Universal Suite下載

    首先可以使用 DevExpress GridControl 自帶的進度條控件。

    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)。

    附最后顯示效果 :

    DevExpress GridControl 進度條控件

    出處:http://www.cnblogs.com/Albin/

    掃碼咨詢


    添加微信 立即咨詢

    電話咨詢

    客服熱線
    023-68661681

    TOP
    三级成人熟女影院,欧美午夜成人精品视频,亚洲国产成人乱色在线观看,色中色成人论坛 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();