/// <summary> /// 保存CI, 并切换到下一个CI /// </summary> public void ClearCurrentEms() { bool deleateflag = false; int deleateindex = -1; //emsDO = null;// 不能在这里面,因为会影响草药 if (currentEmsControl != null) { splitContainer1.RemoveRender(currentEmsControl); for (int index = 0; index < emsIndexAndButtonArea.IndexRenderList.Count; index++) { if (deleateflag) { if (index == deleateindex) { emsIndexAndButtonArea.IndexRenderList[index].Crossflag = false; emsIndexAndButtonArea.IndexRenderList[index].Editflag = true; this.emsDO = emsIndexAndButtonArea.IndexRenderList[index].Ci.EmsHeadDO; this.dto = emsIndexAndButtonArea.IndexRenderList[index].Ci.CiEmsDTO; //this.splitContainer1.Panel1.Controls.Add(render.Ci); emsIndexAndButtonArea.IndexRenderList[index].Ci.Dock = DockStyle.None; emsIndexAndButtonArea.IndexRenderList[index].Location = TMPrender.Location; TMPrender = emsIndexAndButtonArea.IndexRenderList[index]; currentEmsControl = emsIndexAndButtonArea.IndexRenderList[index].Ci; this.splitContainer1.AddControl(emsIndexAndButtonArea.IndexRenderList[index].Ci, xap.cli.sdk.controls.ControlPosition.Center); } else { emsIndexAndButtonArea.IndexRenderList[index].Location = new Point(emsIndexAndButtonArea.IndexRenderList[index - 1].Location.X + 40, emsIndexAndButtonArea.IndexRenderList[index - 1].Location.Y); } emsIndexAndButtonArea.IndexRenderList[index].Invalidate(); } else if (emsIndexAndButtonArea.IndexRenderList[index].Editflag) { this.emsList.Remove(emsIndexAndButtonArea.IndexRenderList[index].ID); emsIndexAndButtonArea.xapScrollBarPanel1.RemoveRender(emsIndexAndButtonArea.IndexRenderList[index]); TMPrender = emsIndexAndButtonArea.IndexRenderList[index]; emsIndexAndButtonArea.IndexRenderList.Remove(emsIndexAndButtonArea.IndexRenderList[index]); deleateflag = true; deleateindex = index--; } } emsIndexAndButtonArea.xapScrollBarPanel1.Invalidate(); } GC.Collect(); }
/// <summary> /// 关闭某个医疗单 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void orCom_deleteevent(object sender, EventArgs e) { //处理 List <XRoundRender> list = new List <XRoundRender>(); XRoundRender activeRender = null; foreach (XRoundRender render in emsIndexAndButtonArea.IndexRenderList) { if (!render.Editflag) { list.Add(render); } else { activeRender = render; emsIndexAndButtonArea.xapScrollBarPanel1.RemoveRender(render); //只有处于编辑状态的是激活的,删除的也是这个 } } //按钮区已删除,处理上边对应的view区域 if (activeRender != null) { XRoundRender nextRender = GetNextActiveRender(activeRender); if (nextRender == null) { emsDO = null; this.splitContainer1.RemoveRender(this.EmsIndexAndButtonArea); //清除“确认”、“取消”按钮 this.tabNaviControl.CanShowForm = false; this.ClearEmsList(); //清空数据 this.tabNaviControl.TabNavigationForm.Close(); //关闭右缩面板 } else { nextRender.Editflag = true; this.emsDO = nextRender.Ci.EmsHeadDO; this.dto = nextRender.Ci.CiEmsDTO; nextRender.Ci.Dock = DockStyle.None; TMPrender = nextRender; currentEmsControl = nextRender.Ci; orderItemView.SetTabText(currentEmsControl.SheetName); this.splitContainer1.AddControl(nextRender.Ci, xap.cli.sdk.controls.ControlPosition.Center); } } emsIndexAndButtonArea.IndexRenderList = list; //zzj,最好能直接删除,不要这样直接替换,能够节约内存 emsIndexAndButtonArea.xapScrollBarPanel1.Invalidate(); }
/// <summary> /// 获取下一个医疗单 /// </summary> /// <param name="render"></param> /// <returns></returns> private XRoundRender GetNextActiveRender(XRoundRender render) { //获取当前关闭对像的索引 int index = emsIndexAndButtonArea.IndexRenderList.IndexOf(render); XRoundRender nextRender; if (index < 0) { return(null); } else if (index == 0) { if (emsIndexAndButtonArea.IndexRenderList.Count > 1) { nextRender = emsIndexAndButtonArea.IndexRenderList[1]; } else { return(null); } } else { if (index + 1 < emsIndexAndButtonArea.IndexRenderList.Count) { //先往后寻找,找到了直接是后面的 nextRender = emsIndexAndButtonArea.IndexRenderList[index + 1]; } else { //后面没有了,往前定位 if (index - 1 == 0) { //没有前面的直接定位到0 nextRender = emsIndexAndButtonArea.IndexRenderList[0]; } else { nextRender = emsIndexAndButtonArea.IndexRenderList[index - 1]; } } } return(nextRender); }
/// <summary> /// 单击多医疗单情况下的底下的索引序号 /// </summary> /// <param name="sender">点的是哪个序号的控件</param> /// <param name="e"></param> private void orCom_MouseClick(object sender, MouseEventArgs e) { if (TMPrender != null) { TMPrender.Invalidate(); } //splitContainer1.Panel1.Controls.Clear(); XRoundRender render = sender as XRoundRender; //做校验的地方 foreach (XRoundRender Pastrender in emsIndexAndButtonArea.IndexRenderList) { if (Pastrender.Equals(render)) { Pastrender.Crossflag = false; Pastrender.Editflag = true; //currentEmsControl.OnRefreshData(this.UiEmsDict[Pastrender.ID] as EmsUIDTO, this.UiEmsDict[Pastrender.ID] as CiEmsDTO); Pastrender.Ci.EmsHeadDO = this.UiEmsDict[Pastrender.ID] as EmsUIDTO; Pastrender.Ci.CiEmsDTO = this.CiEmsDict[Pastrender.ID] as CiEmsDTO; this.emsDO = Pastrender.Ci.EmsHeadDO; this.dto = Pastrender.Ci.CiEmsDTO; //this.splitContainer1.Panel1.Controls.Add(render.Ci); render.Ci.Dock = DockStyle.None; currentEmsControl = Pastrender.Ci; //界面更换完毕后要刷新界面,否则数据无法显示 currentEmsControl.OnRefreshData(this.UiEmsDict[Pastrender.ID] as EmsUIDTO, this.CiEmsDict[Pastrender.ID] as CiEmsDTO); orderItemView.SetTabText(currentEmsControl.SheetName); this.splitContainer1.AddControl(Pastrender.Ci, xap.cli.sdk.controls.ControlPosition.Center); } else { if (Pastrender.Editflag) { Pastrender.Editflag = false; } } // TMPrender = render; //zzj:这句没必要放循环里,因为每次都是一样的 } TMPrender = render; //zzj:这句没必要放循环里,因为每次都是一样的 }
/// <summary> /// 多医疗单处理,医疗单入口 /// </summary> /// <param name="dataList">医嘱对象集合(第一个不是医嘱,是医嘱的数据来源)</param> /// <param name="patientsDto">患者信息DTO</param> /// <param name="tabNaviControl">右缩面板对象</param> public void ManyRecordSheet(List <Object> dataList, Ent4BannerDTO patientsDto, TabNavigatorControl tabNaviControl) { this.emsList.Clear(); this.ciControlNameDict.Clear(); this.UiEmsDict.Clear(); this.CiEmsDict.Clear(); this.ctls.Clear(); this.emsIndexAndButtonArea.DataSource.Clear(); if (this.emsDO != null) { this.emsDO.Emsdrugs.EmsOrDrugList.Clear(); } this.tabNaviControl = tabNaviControl; if (dataList != null && dataList.Count > 0 && patientsDto != null) { ParseOrderDataFrom(dataList); for (int i = 1; i < dataList.Count; ++i) { // 默认医疗单 this.SetEmsFromOrdOrSrv(dataList[i], patientsDto); emsList.Add(i + "", ciControl); this.UiEmsDict.Add(i + "", this.emsDO); this.CiEmsDict.Add(i + "", this.dto); ciControlNameDict.Add(i + "", SheetName); } // 处理多医疗单显示 emsIndexAndButtonArea.RenderVisable = true; emsIndexAndButtonArea.Dock = DockStyle.None; if (emsList.Count > 1) { emsIndexAndButtonArea.DataSource = emsList; emsIndexAndButtonArea.NameDict = ciControlNameDict; emsIndexAndButtonArea.IndexRenderList[emsIndexAndButtonArea.IndexRenderList.Count - 1].Crossflag = false; TMPrender = emsIndexAndButtonArea.IndexRenderList[emsIndexAndButtonArea.IndexRenderList.Count - 1]; emsIndexAndButtonArea.IndexRenderList[emsIndexAndButtonArea.IndexRenderList.Count - 1].Editflag = true; this.emsDO = emsIndexAndButtonArea.IndexRenderList[emsIndexAndButtonArea.IndexRenderList.Count - 1].Ci.EmsHeadDO; //this.splitContainer1.SplitterDistance = 427; //splitContainer1.BottomWidth = 75; emsIndexAndButtonArea.xapScrollBarPanel1.Invalidate(); this.splitContainer1.AddControl(emsIndexAndButtonArea, xap.cli.sdk.controls.ControlPosition.Bottom, 71); } else { foreach (XRoundRender Pastrender in emsIndexAndButtonArea.IndexRenderList) { emsIndexAndButtonArea.xapScrollBarPanel1.RemoveRender(Pastrender); } emsIndexAndButtonArea.IndexRenderList.Clear(); emsIndexAndButtonArea.RenderVisable = false; //this.splitContainer1.SplitterDistance = 460; splitContainer1.BottomWidth = 40; emsIndexAndButtonArea.xapScrollBarPanel1.Invalidate(); this.splitContainer1.AddControl(emsIndexAndButtonArea, xap.cli.sdk.controls.ControlPosition.Bottom, 40); } //this.splitContainer1.Panel2.Controls.Add(orCom); //不要在这里注册,每次注册都会累加(位置调整到创建emsIndexAndButtonArea的位置,确保只创建一次 wzz) //emsIndexAndButtonArea.RounderClick += new MouseEventHandler(orCom_MouseClick); //emsIndexAndButtonArea.DeleteEvent += new EventHandler(orCom_deleteevent); } }