/// <summary> /// 根据实体对象的状态改变编辑控件的编辑状态。 /// </summary> /// <param name="bindingCtlList"></param> /// <param name="entityState"></param> /// <param name="exclusiveCtls"></param> public void SetCtlByAllowEditStates(List <ColumnBindingInfo> bindingCtlList, MB.Util.Model.EntityState entityState, params Control[] exclusiveCtls) { if (bindingCtlList == null || bindingCtlList.Count == 0) { return; } foreach (ColumnBindingInfo ctl in bindingCtlList) { if (!ctl.ColumnPropertyInfo.CanEdit) { continue; } if (string.IsNullOrEmpty(ctl.ColumnPropertyInfo.AllowEditStates)) { continue; } if (exclusiveCtls == null || Array.IndexOf(exclusiveCtls, ctl.BindingControl) >= 0) { continue; } string[] states = ctl.ColumnPropertyInfo.AllowEditStates.Split(','); string currentState = entityState.ToString(); bool canEdit = Array.IndexOf <string>(states, currentState) >= 0; setEditControlReadonly(ctl.BindingControl, !canEdit); } }
private int Save() { int re = 0; System.ServiceModel.ICommunicationObject commObject = _ClientRuleObject.CreateServerCommunicationObject(); try { int index = 0; foreach (TreeListNode node in this.trvLstMain.Nodes) { int id = (int)node.GetValue(_TreeListHoster.TreeViewCfg.KeyFieldName); string name = (string)node.GetValue(_TreeListHoster.TreeViewCfg.DisplayFieldName);//调试用 IList dataSource = _BindingSource.DataSource as IList; foreach (object data in dataSource) { int dataId = (int)MB.Util.MyReflection.Instance.InvokePropertyForGet(data, _TreeListHoster.TreeViewCfg.KeyFieldName); if (id == dataId) { MB.Util.Model.EntityState entityState = MB.WinBase.UIDataEditHelper.Instance.GetEntityState(data); if (entityState == MB.Util.Model.EntityState.Persistent) { MB.WinBase.UIDataEditHelper.Instance.SetEntityState(data, MB.Util.Model.EntityState.Modified); } MB.Util.MyReflection.Instance.InvokePropertyForSet(data, _TreeListHoster.TreeViewCfg.OrderFieldName, index); _ClientRuleObject.AddToCache(commObject, (int)_ClientRuleObject.MainDataTypeInDoc, data, false, (string[])null); index++; break; } } } re = _ClientRuleObject.Flush(commObject); } catch (Exception ex) { MB.WinBase.ApplicationExceptionTerminate.DefaultInstance.ExceptionTerminate(ex); } finally { try { commObject.Close(); } catch { } } if (re > 0) { try { _IsMainTreeNeedRefreshed = true; MB.WinBase.MessageBoxEx.Show("数据保存成功"); } catch (Exception ex) { MB.Util.TraceEx.Write(ex.Message); throw new MB.Util.APPException("数据保存成功,但本地数据更新有误,请关闭窗口手动完成刷新", MB.Util.APPMessageType.DisplayToUser); } } return(re); }
/// <summary> /// 获取实体对象的状态。 /// </summary> /// <param name="entity"></param> /// <returns></returns> public MB.Util.Model.EntityState GetEntityState(object entity) { var val = MB.Util.MyReflection.Instance.InvokePropertyForGet(entity, ENTITY_STATE_PROPERTY); if (val == null) { throw new MB.Util.APPException(string.Format(" {0} 不是系统有效的主表实体对象,系统所认识的实体对象至少包含 {1} 属性!", entity.GetType().FullName, ENTITY_STATE_PROPERTY)); } MB.Util.Model.EntityState state = (MB.Util.Model.EntityState)Enum.Parse(typeof(MB.Util.Model.EntityState), val.ToString()); return(state); }
//根据修改的信息设置实体对象的编辑状态 private void setCurrentEditItemState() { object entity = _BindingSource.Current; MB.Util.Model.EntityState entityState = MB.WinBase.UIDataEditHelper.Instance.GetEntityState(entity); if (entityState == MB.Util.Model.EntityState.Persistent) { _BindingSource.RaiseListChangedEvents = false; MB.WinBase.UIDataEditHelper.Instance.SetEntityState(entity, MB.Util.Model.EntityState.Modified); _BindingSource.RaiseListChangedEvents = true; } }
/// <summary> /// 根据当前实体的状态控制工具拦的状态。 /// </summary> protected virtual void OnToolsButtonValidate() { if (!_BindingSource.CheckExistsCurrentItem()) { return; } object entity = _BindingSource.Current; if (entity is DataRow) { throw new MB.Util.APPException("目前框架的实现还不支持DataRow 的绑定编辑处理。"); } bntMoveFirstItem.Enabled = !_MainBindingGridView.IsFirstRow; // _BindingSource.Position > 0; bntMovePreviousItem.Enabled = !_MainBindingGridView.IsFirstRow; // _BindingSource.Position > 0; bntMoveLastItem.Enabled = !_MainBindingGridView.IsLastRow; // _BindingSource.Position < _BindingSource.Count - 1; bntMoveNextItem.Enabled = !_MainBindingGridView.IsLastRow; // _BindingSource.Position < _BindingSource.Count - 1; // bntPositionItem.Text = _MainBindingGridView.FocusedRowHandle.ToString();// (_BindingSource.Position + 1).ToString(); bntPositionItem.Text = string.Format("{0}/{1}", _MainBindingGridView.FocusedRowHandle + 1, _MainBindingGridView.RowCount); MB.WinBase.Common.ObjectState objectState = MB.WinBase.UIDataEditHelper.Instance.GetObjectState(entity); bntAddNewItem.Enabled = notRejectCommand(UICommandType.AddNew) && true && this.CurrentEditType != ObjectEditType.OpenReadOnly; bntCancelItem.Enabled = ((objectState == ObjectState.New && _BindingSource.Count > 1) || objectState == ObjectState.Modified); bntDeleteItem.Enabled = notRejectCommand(UICommandType.Delete) && (objectState == ObjectState.Modified || objectState == ObjectState.Unchanged) && _BindingSource.Count > 1 && this.CurrentEditType != ObjectEditType.OpenReadOnly; bntSaveItem.Enabled = notRejectCommand(UICommandType.Save) && (objectState == ObjectState.New || objectState == ObjectState.Modified); bntSubmitItem.Enabled = notRejectCommand(UICommandType.Submit) && (objectState == ObjectState.Unchanged); bntCancelSubmitItem.Enabled = notRejectCommand(UICommandType.CancelSubmit) && objectState == ObjectState.Validated; //根据实体对象的状态变化设置相应的信息. MB.Util.Model.EntityState entityState = MB.WinBase.UIDataEditHelper.Instance.GetEntityState(entity); //判断是否存在单据状态属性 bool exists = MB.WinBase.UIDataEditHelper.Instance.CheckExistsDocState(entity); if (exists) { MB.Util.Model.DocState docState = MB.WinBase.UIDataEditHelper.Instance.GetEntityDocState(entity); MB.WinBase.Binding.BindingSourceHelper.Instance.SetCtlReadOnly(_EditColumnCtlBinding, docState != MB.Util.Model.DocState.Progress); OnDocStateChanged(_BindingSource.Current, docState); } else { bntSubmitItem.Enabled = false; bntCancelSubmitItem.Enabled = false; } MB.WinBase.Binding.BindingSourceHelper.Instance.SetCtlByAllowEditStates(_EditColumnCtlBinding, entityState); //根据模块的需要重新初始化操作菜单项。 refreshFormatButtonItem(); }
/// <summary> /// 以相同的状态改变数据实体 /// </summary> public void AcceptChanges() { this.RaiseListChangedEvents = false; foreach (KeyValuePair <int, object> info in this) { MB.Util.Model.EntityState entityState = MB.WinBase.UIDataEditHelper.Instance.GetEntityState(info.Value); if (entityState == MB.Util.Model.EntityState.New || entityState == MB.Util.Model.EntityState.Modified) { MB.WinBase.UIDataEditHelper.Instance.SetEntityState(info.Value, MB.Util.Model.EntityState.Persistent); } //需要处理删除的情况 } this.RaiseListChangedEvents = true; }
/// <summary> /// 检查编辑的实体是否已经发生改变。 /// </summary> /// <returns></returns> public bool CheckEntityExistsModified() { if (_CurrentEditEntitys == null) { return(false); } foreach (T info in _CurrentEditEntitys) { MB.Util.Model.EntityState entityState = MB.WinBase.UIDataEditHelper.Instance.GetEntityState(info); if (entityState == MB.Util.Model.EntityState.New || entityState == MB.Util.Model.EntityState.Modified) { return(true); } } return(false); }
/// <summary> /// 以相同的状态改变数据实体 /// </summary> public void AcceptChanges() { if (_CurrentEditEntitys == null) { return; } foreach (T info in _CurrentEditEntitys) { MB.Util.Model.EntityState entityState = MB.WinBase.UIDataEditHelper.Instance.GetEntityState(info); if (entityState == MB.Util.Model.EntityState.New || entityState == MB.Util.Model.EntityState.Modified) { MB.WinBase.UIDataEditHelper.Instance.SetEntityState(info, MB.Util.Model.EntityState.Persistent); } } }
/// <summary> /// 把数据编辑到符合数据存储的集合类中。 /// </summary> /// <param name="detailEditEntitys"></param> /// <param name="dataInDocType"></param> /// <param name="lstData"></param> public void BuildEditEntitys(List <KeyValuePair <int, object> > detailEditEntitys, int dataInDocType, IList lstData) { foreach (object entity in lstData) { var val = MB.Util.MyReflection.Instance.InvokePropertyForGet(entity, ENTITY_STATE_PROPERTY); if (val == null) { throw new MB.Util.APPException(string.Format(" {0} 不是系统有效的主表实体对象,系统所认识的实体对象至少包含 {1} 属性!", entity.GetType().FullName, ENTITY_STATE_PROPERTY)); } MB.Util.Model.EntityState state = (MB.Util.Model.EntityState)Enum.Parse(typeof(MB.Util.Model.EntityState), val.ToString()); if (state == MB.Util.Model.EntityState.New || state == MB.Util.Model.EntityState.Modified) { detailEditEntitys.Add(new KeyValuePair <int, object>(dataInDocType, entity)); } } }
/// <summary> /// 设置实体对象的状态。 /// </summary> /// <param name="entity"></param> /// <param name="state"></param> public void SetEntityState(object entity, MB.Util.Model.EntityState state) { Type t = entity.GetType(); System.Reflection.PropertyInfo proInfo = t.GetProperty(ENTITY_STATE_PROPERTY); if (proInfo == null) { throw new MB.Util.APPException(string.Format(" {0} 不是系统有效的主表实体对象,系统所认识的实体对象至少包含 {1} 属性!", entity.GetType().FullName, ENTITY_STATE_PROPERTY)); } //由于WCF 客户端代理引用后生产的枚举类型不一样,需要进行转换。 //以后可以把 MB.Util.Model.EntityState 注册为 WCF 所认识的类型,那么就不需要进行这样的转换。 try { object val = Enum.Parse(proInfo.PropertyType, state.ToString()); MB.Util.MyReflection.Instance.InvokePropertyForSet(entity, ENTITY_STATE_PROPERTY, val); } catch (Exception ex) { throw MB.Util.APPExceptionHandlerHelper.PromoteException(ex, "可能是MB.Util.Model.EntityState 中增加了新的类型值,但客户端没有重新刷新引用引起。"); } }
void _BindingSource_ListChanged(object sender, ListChangedEventArgs e) { if (e.ListChangedType == ListChangedType.ItemChanged) { object currentEntity = _BindingSource[e.NewIndex]; MB.Util.Model.EntityState entityState = MB.WinBase.UIDataEditHelper.Instance.GetEntityState(currentEntity); if (entityState == MB.Util.Model.EntityState.Persistent) { MB.WinBase.UIDataEditHelper.Instance.SetEntityState(currentEntity, MB.Util.Model.EntityState.Modified); // _UnSaveEditEntitys.Add(currentEntity); } if (!_UnSaveEditEntitys.Contains(currentEntity)) { _UnSaveEditEntitys.Add(currentEntity); MB.WinBase.AppMessenger.DefaultMessenger.Publish(XtraRibbonMdiMainForm.MSG_REQUIRE_REFRESH_BUTTONS); } } else { } }
void _BindingSource_ListChanged(object sender, ListChangedEventArgs e) { if (!_CurrentIsDropNode) { return; } //判断如果是在 _EditEntitys 的修改 明显禁止的事件就不做处理。 if (e.ListChangedType == ListChangedType.Reset) { return; } if (e.ListChangedType != ListChangedType.ItemChanged) { return; } object currentEntity = _BindingSource[e.NewIndex]; MB.Util.Model.EntityState entityState = MB.WinBase.UIDataEditHelper.Instance.GetEntityState(currentEntity); if (entityState == MB.Util.Model.EntityState.Persistent) { MB.WinBase.UIDataEditHelper.Instance.SetEntityState(currentEntity, MB.Util.Model.EntityState.Modified); _UnSaveEditEntitys.Add(currentEntity); MB.WinBase.AppMessenger.DefaultMessenger.Publish(XtraRibbonMdiMainForm.MSG_REQUIRE_REFRESH_BUTTONS); } else if (entityState == MB.Util.Model.EntityState.Modified) { //保证最后加入的未存储容器的对象 Index 都在最后,以保证在树型数据保存中结构存储的正确性。 if (_UnSaveEditEntitys.Contains(currentEntity)) { _UnSaveEditEntitys.Remove(currentEntity); } _UnSaveEditEntitys.Add(currentEntity); MB.WinBase.AppMessenger.DefaultMessenger.Publish(XtraRibbonMdiMainForm.MSG_REQUIRE_REFRESH_BUTTONS); } }
//根据修改的信息设置实体对象的编辑状态 private void setCurrentEditItemState() { object entity = _EditBindingSource.Current; MB.Util.Model.EntityState entityState = MB.WinBase.UIDataEditHelper.Instance.GetEntityState(entity); if (entityState == MB.Util.Model.EntityState.Persistent) { //如果当前单据包含单据状态 那么如果单据已经确认了也不能进行修改 bool b = MB.WinBase.UIDataEditHelper.Instance.CheckExistsDocState(entity); if (b) { var docState = MB.WinBase.UIDataEditHelper.Instance.GetEntityDocState(entity); if (docState != Util.Model.DocState.Progress) { return; } } _EditBindingSource.RaiseListChangedEvents = false; MB.WinBase.UIDataEditHelper.Instance.SetEntityState(entity, MB.Util.Model.EntityState.Modified); _EditBindingSource.RaiseListChangedEvents = true; } }
void bindingNavMain_ItemClicked(object sender, ToolStripItemClickedEventArgs e) { using (MB.WinBase.WaitCursor cursor = new MB.WinBase.WaitCursor(this)) { tsbHideTextBox.Focus(); try { if (e.ClickedItem.Equals(bntMoveFirstItem)) { moveFocusPosition(GridDataRowMoveType.First); //OnBindingSourcePositionChanging(0); } else if (e.ClickedItem.Equals(bntMovePreviousItem)) { moveFocusPosition(GridDataRowMoveType.Prev); // OnBindingSourcePositionChanging(_BindingSource.Position); } else if (e.ClickedItem.Equals(bntMoveNextItem)) { moveFocusPosition(GridDataRowMoveType.Next); // OnBindingSourcePositionChanging(_BindingSource.Position + 1); } else if (e.ClickedItem.Equals(bntMoveLastItem)) { moveFocusPosition(GridDataRowMoveType.Last); //OnBindingSourcePositionChanging(_BindingSource.Count - 1); } else if (e.ClickedItem.Equals(bntAddNewItem)) { AddNew(); } else if (e.ClickedItem.Equals(bntCancelItem)) { Cancel(); } else if (e.ClickedItem.Equals(bntSaveItem)) { Save(); } else if (e.ClickedItem.Equals(bntDeleteItem)) { Delete(); } else if (e.ClickedItem.Equals(bntSubmitItem)) { if (_BindingSource.Current == null) { return; } MB.Util.Model.EntityState entityState = MB.WinBase.UIDataEditHelper.Instance.GetEntityState(_BindingSource.Current); if (entityState == MB.Util.Model.EntityState.Modified) { throw MB.Util.APPExceptionHandlerHelper.CreateDisplayToUser("单据数据已经发生改变,请先保存"); } Submit(); } else if (e.ClickedItem.Equals(bntCancelSubmitItem)) { CancelSubmit(); } else if (e.ClickedItem.Equals(butExtendItem)) { if (_ExtendToolStripButtonMenu != null) { _ExtendToolStripButtonMenu.Show(this, new Point(butExtendItem.Bounds.X, butExtendItem.Height)); } } else { } OnToolsButtonValidate(); } catch (Exception ex) { MB.WinBase.ApplicationExceptionTerminate.DefaultInstance.ExceptionTerminate(ex); } } }
/// <summary> /// 获取当前编辑单据的状态。 /// 特殊说明: 在UI 层操作时 由于该方法要频繁进行调用,所以把它实现在UI层 而非作为服务来提供。 /// </summary> /// <param name="entity"></param> /// <returns></returns> public MB.WinBase.Common.ObjectState GetObjectState(object entity) { var val = MB.Util.MyReflection.Instance.InvokePropertyForGet(entity, ENTITY_STATE_PROPERTY); if (val == null) { throw new MB.Util.APPException(string.Format(" {0} 不是系统有效的主表实体对象,系统所认识的实体对象至少包含 {1} 属性!", entity.GetType().FullName, ENTITY_STATE_PROPERTY)); } MB.Util.Model.EntityState state = (MB.Util.Model.EntityState)Enum.Parse(typeof(MB.Util.Model.EntityState), val.ToString()); if (state == MB.Util.Model.EntityState.New) { return(MB.WinBase.Common.ObjectState.New); } else if (state == MB.Util.Model.EntityState.Deleted) { return(MB.WinBase.Common.ObjectState.Deleted); } else if (state == MB.Util.Model.EntityState.Modified) { return(MB.WinBase.Common.ObjectState.Modified); } else if (state == MB.Util.Model.EntityState.Persistent) { bool existsDocState = MB.Util.MyReflection.Instance.CheckObjectExistsProperty(entity, ENTITY_DOC_STATE); if (!existsDocState) { return(MB.WinBase.Common.ObjectState.Unchanged); } MB.Util.Model.DocState docState = GetEntityDocState(entity); if ((int)docState >= MB.BaseFrame.SOD.OVER_DOC_STATE_LIMIT) { return(Common.ObjectState.OverDocState); } switch (docState) { case MB.Util.Model.DocState.Progress: return(MB.WinBase.Common.ObjectState.Unchanged); case MB.Util.Model.DocState.Validated: return(MB.WinBase.Common.ObjectState.Validated); case MB.Util.Model.DocState.Approved: return(MB.WinBase.Common.ObjectState.Approved); case MB.Util.Model.DocState.Completed: return(MB.WinBase.Common.ObjectState.Completed); case MB.Util.Model.DocState.Suspended: return(MB.WinBase.Common.ObjectState.Suspended); case MB.Util.Model.DocState.Withdraw: return(MB.WinBase.Common.ObjectState.Withdraw); default: throw new MB.Util.APPException(string.Format("从DocState 转换到ObjectState 时,对于DocState 还没有进行处理!", docState.ToString())); } } else if (state == MB.Util.Model.EntityState.Transient) { return(MB.WinBase.Common.ObjectState.None); } else { throw new MB.Util.APPException("根据主表的实体对象转换为所认识的对象状态是有误,请检查EntityState 和 DocState!"); } }
/// <summary> /// 根据当前实体的状态控制工具拦的状态。 /// </summary> protected virtual void OnToolsButtonValidate() { if (!_MainGridBindingSource.CheckExistsCurrentItem()) { return; } object entity = _EditBindingSource.Current; if (entity is DataRow) { throw new MB.Util.APPException("目前框架的实现还不支持DataRow 的绑定编辑处理。"); } bntMoveFirstItem.Enabled = _MainBindingGridView != null && !_MainBindingGridView.IsFirstRow; bntMovePreviousItem.Enabled = _MainBindingGridView != null && !_MainBindingGridView.IsFirstRow; bntMoveLastItem.Enabled = _MainBindingGridView != null && !_MainBindingGridView.IsLastRow; bntMoveNextItem.Enabled = _MainBindingGridView != null && !_MainBindingGridView.IsLastRow; if (_MainBindingGridView != null) { bntPositionItem.Caption = string.Format("{0}/{1}", _MainBindingGridView.FocusedRowHandle + 1, _MainBindingGridView.RowCount); } MB.WinBase.Common.ObjectState objectState = MB.WinBase.UIDataEditHelper.Instance.GetObjectState(entity); bntAddNewItem.Enabled = true && this.CurrentEditType != ObjectEditType.OpenReadOnly; //判断是否为扩展的操作类型 bool isExtendDocState = objectState == ObjectState.OverDocState; bntDeleteItem.Enabled = !isExtendDocState && (objectState == ObjectState.Modified || objectState == ObjectState.Unchanged) && _MainGridBindingSource.Count > 1 && this.CurrentEditType != ObjectEditType.OpenReadOnly; bntSaveItem.Enabled = !isExtendDocState && (objectState == ObjectState.New || objectState == ObjectState.Modified); bntSubmitItem.Enabled = !isExtendDocState && (objectState == ObjectState.Unchanged); bntCancelSubmitItem.Enabled = !isExtendDocState && objectState == ObjectState.Validated; _BusinessOperateTrace.ResetDocEntity(entity); //根据实体对象的状态变化设置相应的信息. MB.Util.Model.EntityState entityState = MB.WinBase.UIDataEditHelper.Instance.GetEntityState(entity); //判断是否存在单据状态属性 bool exists = MB.WinBase.UIDataEditHelper.Instance.CheckExistsDocState(entity); if (exists) { MB.Util.Model.DocState docState = MB.WinBase.UIDataEditHelper.Instance.GetEntityDocState(entity); if (bntDeleteItem.Enabled) { //只有在录入中的数据才可以进行删除 bntDeleteItem.Enabled = docState == MB.Util.Model.DocState.Progress; } MB.WinBase.Binding.BindingSourceHelper.Instance.SetCtlReadOnly(_EditColumnCtlBinding, docState != MB.Util.Model.DocState.Progress); OnDocStateChanged(_EditBindingSource.Current, docState); } else { bntSubmitItem.Enabled = false; bntCancelSubmitItem.Enabled = false; } MB.WinBase.Binding.BindingSourceHelper.Instance.SetCtlByAllowEditStates(_EditColumnCtlBinding, entityState); //设置当前编辑Form 为只读属性 if (_CurrentEditType == ObjectEditType.OpenReadOnly) { MB.WinBase.Binding.BindingSourceHelper.Instance.SetCtlReadOnly(_EditColumnCtlBinding, true); } //根据模块的需要重新初始化操作菜单项。 OnAfterRefreshButtonItem(); }
private void bntItem_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { using (MB.WinBase.WaitCursor cursor = new MB.WinBase.WaitCursor(this)) { try { if (e.Item.Equals(bntMoveFirstItem)) { moveFocusPosition(GridDataRowMoveType.First); reloadEditBindingSource(); } else if (e.Item.Equals(bntMovePreviousItem)) { moveFocusPosition(GridDataRowMoveType.Prev); reloadEditBindingSource(); } else if (e.Item.Equals(bntMoveNextItem)) { moveFocusPosition(GridDataRowMoveType.Next); reloadEditBindingSource(); } else if (e.Item.Equals(bntMoveLastItem)) { moveFocusPosition(GridDataRowMoveType.Last); reloadEditBindingSource(); } else if (e.Item.Equals(bntAddNewItem)) { AddNew(); } else if (e.Item.Equals(bntSaveItem)) { Save(); } else if (e.Item.Equals(bntDeleteItem)) { Delete(); reloadEditBindingSource(); } else if (e.Item.Equals(bntSubmitItem)) { if (_EditBindingSource.Current == null) { return; } MB.Util.Model.EntityState entityState = MB.WinBase.UIDataEditHelper.Instance.GetEntityState(_EditBindingSource.Current); if (entityState == MB.Util.Model.EntityState.Modified) { throw MB.Util.APPExceptionHandlerHelper.CreateDisplayToUser("单据数据已经发生改变,请先保存"); } Submit(); } else if (e.Item.Equals(bntCancelSubmitItem)) { CancelSubmit(); } else if (e.Item.Equals(butExtendItem)) { if (_ExtendToolStripButtonMenu != null) { Point p = default(Point); foreach (DevExpress.XtraBars.BarItemLink item in barTools.ItemLinks) { if (item.Item.Equals(butExtendItem)) { p.X = item.Bounds.X; } } _ExtendToolStripButtonMenu.Show(this, new Point(p.X, butExtendItem.Height + 6));//6为偏移量 return; } } else if (e.Item.Equals(tsButQuit)) { this.Close(); return; } else { } OnToolsButtonValidate(); } catch (Exception ex) { MB.WinBase.ApplicationExceptionTerminate.DefaultInstance.ExceptionTerminate(ex); } } }