/// <summary> /// 打开新窗体前询问是否保存原有窗体 /// </summary> /// <returns></returns> public bool m_blnIsSaveBeforeNewForm() { bool blnIsCancle = false; frmHRPBaseForm hrpForm = clsEMRLogin.s_FrmMDI.ActiveMdiChild as frmHRPBaseForm; if (hrpForm == null) { return(false); } hrpForm.m_blnNotClickWindows = true; if (!hrpForm.m_blnHasClosing && !hrpForm.TopLevel) { DialogResult dlgResult = DialogResult.None; if (!MDIParent.s_ObjSaveCue.m_blnCheckStatusSame(hrpForm)) { if (MDIParent.s_ObjCurrentPatient != null && MDIParent.s_ObjCurrentPatient.m_IntCharacter == 1) { dlgResult = DialogResult.No; } else { dlgResult = clsPublicFunction.ShowQuestionMessageBox("[" + hrpForm.Text + "]做了改动,是否保存?", MessageBoxButtons.YesNoCancel); //dlgResult = DialogResult.Yes; } if (dlgResult == DialogResult.Yes) { long lngRes = hrpForm.m_lngSave(); //保存完成后将该窗体关闭 if (lngRes > 0) { hrpForm.Close(); } } else if (dlgResult == DialogResult.Cancel) { blnIsCancle = true; hrpForm.m_blnNotClickWindows = false; return(blnIsCancle); } } } return(blnIsCancle); }
/// <summary> /// 保存窗体记录 /// </summary> /// <param name="p_frmNeedSaveCue">需要保存的窗体</param> private void m_mthHandleSaveCue(Form p_frmNeedSaveCue, CancelEventArgs e) { try { //取窗体名称+当前住院号,已实现一个病人只能打开同样一个窗体功能 string strHash = p_frmNeedSaveCue.Name + com.digitalwave.emr.BEDExplorer.frmHRPExplorer.objpCurrentPatient.m_strINPATIENTID_CHR; Hashtable hasStatus = (Hashtable)m_hasFormInfo[strHash.GetHashCode()]; if (hasStatus == null) { return; } //检查窗体状态是否改变 bool blnIsSame = m_blnCheckStatusSame(p_frmNeedSaveCue, hasStatus); //窗体状态改变,提示保存,如需要保存,调用保存功能 if (!blnIsSame && p_frmNeedSaveCue.DialogResult != DialogResult.Yes) { frmHRPBaseForm frmBase = p_frmNeedSaveCue as frmHRPBaseForm; if (frmBase != null) { frmBase.m_blnHasClosing = true; } //if (p_frmNeedSaveCue is frmHRPBaseForm) //{ // ((frmHRPBaseForm)p_frmNeedSaveCue).m_blnHasClosing = true; //} DialogResult dlgResult = DialogResult.None; if (MDIParent.s_ObjCurrentPatient != null && MDIParent.s_ObjCurrentPatient.m_IntCharacter == 1) { dlgResult = DialogResult.No; } else { dlgResult = clsPublicFunction.ShowQuestionMessageBox("[" + p_frmNeedSaveCue.Text + "]做了改动,是否保存?", MessageBoxButtons.YesNoCancel); } if (dlgResult == DialogResult.Yes) { #region yes if (p_frmNeedSaveCue is frmPatientInfoManage) { ((frmPatientInfoManage)p_frmNeedSaveCue).m_mthSave(); } else if (p_frmNeedSaveCue is iCareBaseForm.frmPatientRecordForm) { ((iCareBaseForm.frmPatientRecordForm)p_frmNeedSaveCue).m_mthSave(); } else if (p_frmNeedSaveCue is frmRecordsBase) { ((frmRecordsBase)p_frmNeedSaveCue).Save(); } else { //frmHRPBaseForm frmBase = p_frmNeedSaveCue as frmHRPBaseForm; if (frmBase != null) { if (frmBase.m_lngSave() > 0) { frmBase.DialogResult = DialogResult.Yes; } } else { PublicFunction objPF = p_frmNeedSaveCue as PublicFunction; if (objPF != null) { objPF.Save(); if (frmBase != null) { frmBase.DialogResult = DialogResult.Yes; } } } } m_hasFormInfo.Remove(strHash.GetHashCode()); #endregion } else if (dlgResult == DialogResult.No) { #region no m_hasFormInfo.Remove(strHash.GetHashCode()); #endregion } else if (dlgResult == DialogResult.Cancel) { #region cancel e.Cancel = true; if (frmBase != null) { frmBase.m_blnHasClosing = false; } //if (p_frmNeedSaveCue is frmHRPBaseForm) //{ // ((frmHRPBaseForm)p_frmNeedSaveCue).m_blnHasClosing = false; //} #endregion } } else { m_hasFormInfo.Remove(strHash.GetHashCode()); } } catch { //若没有设置当前病人抛出 return; } }