//显示(打开)UI窗体 //功能: //1.根据UI窗体的名称,加载到“所有UI窗体”缓存集合中 //2.根据不同的UI窗体的“显示模式”,分别作不同的加载处理 public void ShowUIForm(string uiFormName) { BaseUIForm baseUIForm = null; //UI窗体基类 //参数检查 if (string.IsNullOrEmpty(uiFormName)) { return; } //根据UI窗体的名称,加载到“所有UI窗体”缓存集合中 baseUIForm = LoadFormsToAllUIFormsCatch(uiFormName); if (baseUIForm == null) { return; } //判断是否清空“栈”结构体集合 if (baseUIForm.CurrentUIType.IsClearReverseChange) { ClearStackArray(); } //根据不同的UI窗体的显示模式,分别作不同的加载处理 switch (baseUIForm.CurrentUIType.UIForms_ShowMode) { case UIFormShowMode.Normal: //“普通显示”窗口模式 //把当前窗体加载到“当前窗体”集合中 LoadUIToCurrentCache(uiFormName); break; case UIFormShowMode.ReverseChange: //需要“反向切换”窗口模式 PushUIForm(uiFormName); break; case UIFormShowMode.HideOther: //“隐藏其他”窗口模式 ExitUIFormFromCacheAndShowOther(uiFormName); break; default: break; } }
private void PopUIForm() { if (_StaCurrentUIForms.Count >= 2) { /* 出栈逻辑 */ BaseUIForm topUIForm = _StaCurrentUIForms.Pop(); //出栈的窗体,进行隐藏处理 topUIForm.Hiding(); //出栈窗体的下一个窗体逻辑 BaseUIForm nextUIForm = _StaCurrentUIForms.Peek(); //下一个窗体“重新显示”处理 nextUIForm.ReDisplay(); } else if (_StaCurrentUIForms.Count == 1) { /* 出栈逻辑 */ BaseUIForm topUIForm = _StaCurrentUIForms.Pop(); //出栈的窗体,进行“隐藏”处理 topUIForm.Hiding(); } }
//UI窗体入栈 //功能: // 1.判断栈里是否已经有窗体,有则“冻结” // 2.先判断“UI预设缓存集合”是否有指定的UI窗体,有则处理。 // 3.指定UI窗体入“栈” private void PushUIForm(string uiFormName) { BaseUIForm baseUI; //UI预设窗体 //判断栈里是否已经有窗体,有则“冻结” if (_StaCurrentUIForms.Count > 0) { BaseUIForm topUIForm = _StaCurrentUIForms.Peek(); topUIForm.Freeze(); } //先判断“UI预设缓存集合”是否有指定的UI窗体,有则处理。 _DicALLUIForms.TryGetValue(uiFormName, out baseUI); if (baseUI != null) { baseUI.Display(); } else { } //指定UI窗体入“栈” _StaCurrentUIForms.Push(baseUI); }