BOS进度条使用学习原创
金蝶云社区-湖南吴双得
湖南吴双得
39人赞赏了该文章 745次浏览 未经作者许可,禁止转载编辑于2023年03月28日 19:50:42

使用向导计算很多数据时,使用进度条给用户展示进度

向导触发进度条方法

public override void WizardStepChanging(WizardStepChangingEventArgs e)
        {
            base.WizardStepChanging(e);

            DoActionUnderNetworkControl();
        }
		private void DoActionUnderNetworkControl()
		{
			try
			{
				if (base.View.LayoutInfo.GetAppearance("FProgressBar") != null)
				{
					ProgressBar control = base.View.GetControl<ProgressBar>("FProgressBar");
					if (control != null)
					{
						control.Start(5);
						control.InvokeControlMethod("SetCurrentValue", 0);
						control.SetFoldingStyle(isfolding: true);
						control.Visible = true;
                        SetControlEnabled(enable: false);
                        _processRate = 0;
                        MainWorker.QuequeTask(base.Context, WizardCreateOutCostAdjustBill, delegate (AsynResult result)
                        {
                            AsyncCallback(result);
                        });
                        _processRate = 10;
                    }
				}
			}
			catch (Exception ex)
			{
				WriteLog();
				throw new KDException(ResManager.LoadKDString("操作不成功!", "003006000001954", SubSystemType.FIN), ex.Message);
			}
		}

WizardCreateOutCostAdjustBill 这个方法里面就是要处理的业务逻辑

		private void WizardCreateOutCostAdjustBill()
		{
			System.Threading.Thread.Sleep(2000);
		}


进度条刷新方法

	public override void OnQueryProgressValue(QueryProgressValueEventArgs e)
	{
            if (_processRate <= 95)
            {
                _processRate++;
            }
            e.Caption = string.Format("正在生成出库成本调整单{0}%", _processRate);
            e.Value = _processRate;
            if (e.Value >= 100)
            {
                SetProgressBarHide();
                SetControlEnabled(enable: true);
            }
        }


这个进度条,会等业务方法(WizardCreateOutCostAdjustBill )处理完,才关闭,但怎么样如实反映 业务进度,还不会用, 待再学习使用

图标赞 39
39人点赞
还没有人点赞,快来当第一个点赞的人吧!
图标打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!