DevExpress的進度條控件ProgressBarControl的使用-以ZedGraph添加曲線進度爲例

場景

Winform控件-DevExpress18下載安裝註冊以及在VS中使用:node

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100061243編程

在使用ZedGraph進行添加曲線時,曲線數量若是不少的狀況下,速度會比較慢。工具

因此在進行添加曲線的過程當中須要顯示進度,效果以下this

 

 

注:spa

博客主頁:
https://blog.csdn.net/badao_liumang_qizhi
關注公衆號
霸道的程序猿
獲取編程相關電子書、教程推送與免費下載。 .net

實現

在當前要添加進度條的頁面打開設計器,並在安裝了DevExpress的工具箱中拖拽一個ProgressBarControl 設計

 

 

 

而後在當前窗體的構造方法中進行進度條控件的一些屬性設置code

public FrmCurveCompareInOne()
        {
            InitializeComponent();
            progressBarControl1.Visible = true;
            //設置一個最小值
            progressBarControl1.Properties.Minimum = 0;
            //設置一個最大值
            progressBarControl1.Properties.Maximum = 100;
            //設置進度條的樣式
            progressBarControl1.Properties.ProgressViewStyle = DevExpress.XtraEditors.Controls.ProgressViewStyle.Solid;
            //當前值
            progressBarControl1.Position = 0;
            //是否顯示進度數據
            progressBarControl1.Properties.ShowTitle = true;
            //是否顯示百分比
            progressBarControl1.Properties.PercentView = true;
           
        }

而後在觸發顯示進度條的方法中傳遞當前進度條對象orm

ChartCompareHelper.RefreshPaneComInOne(this.zedGraphControl1, xYModelStore.YAxisModelList,this.progressBarControl1);

在上面刷新ZedGraph的圖形的方法中,添加曲線的部分進行進度的設置對象

 if (yList != null && yList.Count > 0)
            {
                PointPairList list = null;
                for (int i = 0; i < yList.Count; i++)
                {
                    //截取前100個循環進行顯示
                    Global.Instance.PrepareCompareDataInOne = Global.Instance.PrepareCompareDataInOne.Where(p => (int.Parse(p.Id) < 101)).ToList();
                    //計算進度條步長
                    int step = 1;
                    //曲線總數小於100 
                    if (Global.Instance.PrepareCompareDataInOne.Count < 100)
                    {
                        step = 100 / Global.Instance.PrepareCompareDataInOne.Count;
                    }
                    else
                    {
                        step = Global.Instance.PrepareCompareDataInOne.Count / 100;
                    }
                    if(progressBar !=null)
                    {
                        //將進度條初始化爲0%
                        progressBar.Position = 0;
                    }
                    //循環添加曲線
                    foreach(DataTreeNode node in Global.Instance.PrepareCompareDataInOne)
                    {
                        IEnumerable<Entity.Record> record =  Global.Instance.VirtualData.RecordDataList.Where(p => p.CycleIndex == int.Parse(node.Id));
                        list = SetCurveTextInOne(yList[i].TitleKey,record);
                        LineItem myCurve = myPane.AddCurve(yList[i].Title, list, System.Drawing.ColorTranslator.FromHtml(yList[i].Color), SymbolType.None);
                        myCurve.YAxisIndex = i;                                                                 //很關鍵,對應使用那個座標值
                        if(progressBar !=null)
                        {
                            //添加成功一條曲線則進度條增長一個步數
                            progressBar.Position += step;
                            if (progressBar.Position >=100)
                            {
                                //若是總進度已經大於100了 則賦值爲100
                                progressBar.Position = 100;
                            }
                            //更新進度條的進度
                            progressBar.Update();
                        }
                    }
                    if (progressBar != null)
                    {
                        //最終添加完全部曲線後將進度條設置爲100%
                        progressBar.Position = 100;
                    }
                } 
相關文章
相關標籤/搜索