private void RibbonMdiMainForm_MdiChildActivate(object sender, EventArgs e)
        {
            if (trvMainFunction.SelectedNode == null || trvMainFunction.SelectedNode.Tag == null)
            {
                return;
            }
            ModuleTreeNodeInfo nodeInfo = trvMainFunction.SelectedNode.Tag as ModuleTreeNodeInfo;
            var afrm = this.GetActiveMdiChildForm();

            if (afrm != null && afrm.ClientRuleObject != null)
            {
                nodeInfo = afrm.ClientRuleObject.ModuleTreeNodeInfo;
            }
            refreshToolsButtonItem(nodeInfo);
        }
        private void trvMainFunction_DoubleClick(object sender, EventArgs e)
        {
            try {
                using (MB.WinBase.WaitCursor cursor = new MB.WinBase.WaitCursor(this)) {
                    TreeViewHitTestInfo hitInfo = trvMainFunction.HitTest(_CurrentMovePoint);
                    if (hitInfo == null || hitInfo.Node == null)
                    {
                        return;
                    }

                    trvMainFunction.SelectedNode = hitInfo.Node;

                    ModuleTreeNodeInfo nodeInfo = hitInfo.Node.Tag as ModuleTreeNodeInfo;
                    OnBeforeDoubleClickTreeNode(new MdiMainFunctionTreeEventArgs(trvMainFunction.SelectedNode, nodeInfo));

                    if (nodeInfo == null || nodeInfo.Commands == null || nodeInfo.Commands.Count == 0)
                    {
                        return;
                    }

                    //判断是否已经打开
                    foreach (Form f in this.MdiChildren)
                    {
                        MB.WinBase.IFace.IViewGridForm iView = f as MB.WinBase.IFace.IViewGridForm;
                        if (iView == null)
                        {
                            continue;
                        }
                        if (iView.ClientRuleObject.ModuleTreeNodeInfo.Equals(nodeInfo))
                        {
                            (iView as Form).BringToFront();
                            return;
                        }
                    }

                    UICreateHelper.Instance.ShowViewGridForm(this, nodeInfo);

                    // _MenuManager.RefreshToolsButtonItem(nodeInfo);
                }
            }
            catch (Exception ex) {
                MB.WinBase.ApplicationExceptionTerminate.DefaultInstance.ExceptionTerminate(ex);
            }
        }
        private void RibbonMdiMainForm_MdiChildActivate(object sender, EventArgs e)
        {
            using (MB.Util.MethodTraceWithTime track = new Util.MethodTraceWithTime("XtraRibbonMdiMainForm::MdiChildActivate")) {
                var moduleInfo = GetFocusedNodeInfo(trvListMain.FocusedNode);
                if (moduleInfo == null)
                {
                    return;
                }
                ModuleTreeNodeInfo nodeInfo = moduleInfo;
                var afrm = this.GetActiveMdiChildForm();
                if (afrm != null && afrm.ClientRuleObject != null)
                {
                    nodeInfo = afrm.ClientRuleObject.ModuleTreeNodeInfo;
                }

                refreshToolsButtonItem(nodeInfo);

                refreshToolsButton();
            }
        }
        //打开焦点模块
        protected void OpenModuleByTreeNode(DevExpress.XtraTreeList.Nodes.TreeListNode treeNode, ModuleOpenState openState)
        {
            try {
                using (MB.WinBase.WaitCursor cursor = new MB.WinBase.WaitCursor(this)) {
                    ModuleTreeNodeInfo nodeInfo = GetFocusedNodeInfo(treeNode);
                    OnBeforeDoubleClickTreeNode(new MdiMainFunctionTreeEventArgs(null, nodeInfo));

                    if (nodeInfo == null || nodeInfo.Commands == null || nodeInfo.Commands.Count == 0)
                    {
                        return;
                    }

                    //判断是否已经打开
                    foreach (Form f in this.MdiChildren)
                    {
                        MB.WinBase.IFace.IForm iView = f as MB.WinBase.IFace.IForm;
                        if (iView == null)
                        {
                            continue;
                        }
                        if (iView.ClientRuleObject.ModuleTreeNodeInfo.ID == nodeInfo.ID)
                        {
                            (iView as Form).BringToFront();
                            return;
                        }
                    }

                    UICreateHelper.Instance.ShowViewGridForm(this, nodeInfo, openState);

                    recordUserActivity(nodeInfo);
                }
            }
            catch (Exception ex) {
                MB.WinBase.ApplicationExceptionTerminate.DefaultInstance.ExceptionTerminate(ex);
            }
        }
        //打开焦点模块
        protected void OpenFavoritesModuleByTreeNode(DevExpress.XtraTreeList.Nodes.TreeListNode treeNode)
        {
            try
            {
                using (MB.WinBase.WaitCursor cursor = new MB.WinBase.WaitCursor(this))
                {
                    if (treeNode.Nodes.Count > 0)
                    {
                        return;
                    }

                    ModuleTreeNodeInfo nodeInfo = GetFocusedFavoritesModuleId(treeNode);

                    //判断是否已经打开
                    foreach (Form f in this.MdiChildren)
                    {
                        MB.WinBase.IFace.IViewGridForm iView = f as MB.WinBase.IFace.IViewGridForm;
                        if (iView == null)
                        {
                            continue;
                        }
                        if (iView.ClientRuleObject.ModuleTreeNodeInfo.ID == nodeInfo.ID)
                        {
                            (iView as Form).BringToFront();
                            return;
                        }
                    }

                    UICreateHelper.Instance.ShowViewGridForm(this, nodeInfo);
                }
            }
            catch (Exception ex)
            {
                MB.WinBase.ApplicationExceptionTerminate.DefaultInstance.ExceptionTerminate(ex);
            }
        }
 /// <summary>
 /// 记录用户当前操作的模块信息
 /// </summary>
 /// <param name="nodeInfo"></param>
 void recordUserActivity(ModuleTreeNodeInfo nodeInfo)
 {
     MB.WinBase.Auditing.UserActivity activity = new WinBase.Auditing.UserActivity(nodeInfo.Name, nodeInfo.Code);
     MB.WinBase.Auditing.UserActivityTracker.Instance.AddActivityToList(activity);
 }
 public MdiMainFunctionTreeEventArgs(TreeNode node, ModuleTreeNodeInfo moduleNodeInfo)
 {
     _Node           = node;
     _ModuleNodeInfo = moduleNodeInfo;
 }