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


場景

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

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

在使用ZedGraph進行添加曲線時,曲線數量如果很多的情況下,速度會比較慢。

所以在進行添加曲線的過程中需要顯示進度,效果如下

 

 

注:

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

實現

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

 

 

 

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

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;
           
        }

然后在觸發顯示進度條的方法中傳遞當前進度條對象

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;
                    }
                } 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM