場景 Winform控制項-DevExpress18下載安裝註冊以及在VS中使用: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100061243 在使用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; } }