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