博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

委托使用实例

Posted on 2014-12-05 11:31  first_start  阅读(147)  评论(0)    收藏  举报

------------------------使用页面-----------------------

public Action<WorkStepArgs> DoAddWorkStep;
public Action<int, DataTable> DoPasteWorkStep;

public static Action rbForBomClick;
public static Action<bool, bool> CreateNewBomVersion;

public void InitWorkStep(int aPart_ID, string bomPath)
{
  rbForBomClick = new Action(ForBomCheckClick);
  CreateNewBomVersion = new Action<bool, bool>(NewBomVersion);
}

private void tsbtnAddProcess_Click(object sender, EventArgs e)
{
  if (DoAddWorkStep == null)
  return;
  WorkStepArgs args = new WorkStepArgs();

  if (this._ProcessData == null || this._ProcessData.Rows.Count == 0)
  {
    args.ProcessFlowID = Guid.Empty;
  }
  else
  {
    args.ProcessFlowID = new Guid(_ProcessData.Rows[0]["ProcessFlowID"].ToString());
  }
  args.IsCommonProcess = rbForPart.Checked;
  DoAddWorkStep(args);
}

private void tsbtnPastPI_Click(object sender, EventArgs e)
{
  if (DoPasteWorkStep != null)
  DoPasteWorkStep(PartId, dt_PI);
}

 

private void ForBomCheckClick()
{
  this._ProcessData = BomDal.GetProcessing(this.BomPath);
  btnSaveToBom.Visible = false;
  btnSaveToPart.Visible = true;
  _wfForBom = true;
  LoadSteps(this._ProcessData);
}

private void NewBomVersion(bool copyMaterialChk, bool createAllChildChk)
{
  try
  {
    if (createAllChildChk)
    {
      Control.CheckForIllegalCrossThreadCalls = false;
      bgWork.RunWorkerAsync();
    }
    else
    {
      BomDal.AddBomVersion(this.BomPath, copyMaterialChk);
      if (AfterNewBomVersion != null)
      AfterNewBomVersion(PartId, BomPath);
    }
  }
  catch (Exception ex)
  {
    lblInfo.Text = ex.Message;
  }
}

------------------------调用页面-----------------------
private void frmBomInfo_Load(object sender, EventArgs e)
{
  ucWorkStep.DoAddWorkStep = AddWorkStep;
  ucWorkStep.DoSetWorkStep = s => SetWorkStep(s);
  ucWorkStep.DoMountMaterial = (s, t) => MountMaterial(s, t);
  ucWorkStep.DoPasteWorkStep = (s, dt) => PasteWorkStep(s, dt);
}

private void AddWorkStep(WorkStepArgs args)
{
  string bomPath = this.tlOldBom.FocusedNode["BomPath"].ToString();

  if (args.ProcessFlowID == Guid.Empty)
  {
    int type = addProcess1(args);
    if (type == 3)
    return;
  }
  frmNewProcessFlow2 frm = new frmNewProcessFlow2();
  frm.ProcessFlowItems.MID = PFItems.MID;
  _ProcessLogicID = -1;
  if (frm.ShowDialog() == DialogResult.OK)
  {
    InitProcessLogicTL();
  }
}

private void PasteWorkStep(int partID, DataTable dt_PI)
{
  if (partID > 0 && dt_PI == null)
  {
    dt_PI = BLL_MPM.GetInstance(Loginer.CurrentUser).getCopyedProcessFlowItemsInfo();
  }
  if (dt_PI != null)
  {
    dt_PFP = BLL_MPM.GetInstance(Loginer.CurrentUser).getCopyedPartFormulaProcessInfo();
    foreach (DataRow dr in dt_PFP.Rows)
    {
      string FormulaName = dr["FormulaName"].ToString().Trim();
      if (!pfList.Contains(FormulaName))
      pfList.Add(dr["FormulaName"].ToString());
    }
  }
}

private void SaveCraft(IButtonInfo sender)
{
  frmSaveCraft frm = new frmSaveCraft();
  if (frm.ShowDialog() == DialogResult.OK)
  {
    if (frm.RbName == "rbForBom")
    {
      WorkStepUC.rbForBomClick();
    }
  }
}

private void CreateBomVersion(IButtonInfo sender)
{
  frmCreateBomVersion frm = new frmCreateBomVersion();
  if (frm.ShowDialog() == DialogResult.OK)
  {
    bool matChk = frm.ChkMaterial;
    bool allChild = frm.AllChild;
    WorkStepUC.CreateNewBomVersion(matChk, allChild);
  }
}