using System.Collections.Generic; using System.Data; using System.Windows.Forms; using Mesnac.Action.Base; using Mesnac.Basic; using Mesnac.Codd.Session; using Mesnac.Controls.Base; using Mesnac.Gui.Workbench; using Mesnac.Gui.Run.Global; using Mesnac.PlugIn.View; using System.Reflection; namespace Mesnac.Action.Default.Purview { public class RefreshSystemPurview : DatabaseAction, IAction { private static bool _isFirstRun = true; public void Run(RuntimeParameter runtime) { base.RunIni(runtime);//必须调用 if (_isFirstRun) { Mesnac.Basic.UserInfo.Instance.OnReLogin += Instance_OnReLogin; _isFirstRun = false; } DoRefresh(); } void Instance_OnReLogin(object sender, System.EventArgs e) { DoRefresh(); } private static void DoRefresh() { //WorkbenchSingleton.Workbench.CloseAllViews(); //关闭所有视图面板 IViewContent[] vcs = WorkbenchSingleton.Workbench.ViewContentCollection.ToArray(); for (int i = 0; i < vcs.Length; i++) { if (vcs[i] != null) { vcs[i].IsRealClose = false; WorkbenchSingleton.Workbench.CloseView(vcs[i]); } } //foreach (IViewContent vc in WorkbenchSingleton.Workbench.ViewContentCollection) //{ // vc.IsRealClose = false; // WorkbenchSingleton.Workbench.CloseView(vc); //} List purviewList = Mesnac.Basic.UserInfo.Instance.PurviewList; //当前用户的权限列表 string[] keys = new string[WorkbenchSingleton.Workbench.ViewContentDic.Keys.Count]; WorkbenchSingleton.Workbench.ViewContentDic.Keys.CopyTo(keys, 0); foreach (string key in keys) { IViewContent vc = WorkbenchSingleton.Workbench.ViewContentDic[key]; PropertyInfo p = vc.GetType().GetProperty("MCPurview"); bool isControlPruview = false; if (bool.TryParse(p.GetValue(vc, null).ToString(), out isControlPruview)) { if (isControlPruview == true) //需要权限控制 { //if (!purviewList.Contains(key)) //{ //} WorkbenchSingleton.Workbench.CloseViewByKey(key, true); //因为需要重新设定画面上按钮的权限,因此正真关闭 } } } //WorkbenchSingleton.Workbench.CloseAllViews(false); //隐藏所有视图面板 //Mesnac.Gui.Common.RunEngine.Instance.CloseAllForms(); AppConfigHandler.Instance.InitCustomerMenuAndToolStrip(WorkbenchSingleton.Workbench.TopMenu, WorkbenchSingleton.Workbench.ToolStrip); //初始化自定义系统菜单和工具栏 } } }