/// <summary> /// 寻找(以className+窗体Form的名称+"_"+EFDevLayoutControl的名称)的配置文件.加载布局..根据参数(配置模式)选择对应目录下的配置文件. /// </summary> /// <param name="ConfigModule">配置模式,默认时先查找用户配置,再查找项目级配置..</param> /// <param name="className">类名称[当窗体名称_+EFDevLayoutControl名称不能满足唯一xml文件名需求时,在开头添加类名称</param> /// <param name="moduleName">一级模块名称.如DE,FI等</param> public void LoadLayout(DevExpress.XtraLayout.LayoutControl layoutControl, ConfigEnum ConfigModule, string className, string moduleName) { //模块名称 string formName = layoutControl.FindForm().Name; if (moduleName.Trim().Equals("")) { moduleName = formName.Length > 6 ? formName.Substring(4, 2) : formName; } if (formName.StartsWith("Form")) { formName = formName.Substring(4); } //XML路径 string fileDirectory = System.Reflection.Assembly.GetExecutingAssembly().Location; fileDirectory = Path.GetDirectoryName(fileDirectory); string fileDirectoryUser = fileDirectory + "\\..\\UserConfig\\" + "EF.EF_Args.formUserId" + "\\" + moduleName + "\\"; string fileDirectoryEP = fileDirectory + "\\..\\" + moduleName + "\\"; //先查看用户级配置,目录不存在读取项目配置 // ---2011-10-27 把 XML配置名称 改为 "窗体名称_"+EFDevLayoutControl的名称+_className.XML string fileName = formName + "_" + layoutControl.Name + (className.Trim().Equals("") ? "" : ("_" + className.Trim())) + ".xml"; //string fileName = className.Trim() + formName + "_" + layoutControl.Name + ".xml"; string filePath = ""; if (ConfigModule == ConfigEnum.EPConfig) { filePath = fileDirectoryEP + fileName; } else if (ConfigModule == ConfigEnum.UserConfig) { filePath = fileDirectoryUser + fileName; } else //默认配置.先读取用户级配置,不存在则读取项目级配置 { filePath = fileDirectoryUser + fileName; if (!IsFileExit(ref filePath)) //不存在,则读取项目级的 { filePath = fileDirectoryEP + fileName; } } if (IsFileExit(ref filePath)) // (System.IO.File.Exists(filePath)) //存在,则读取 { //string EPConfigXML = fileDirectoryEP + fileName; //项目级配置xml //项目级配置xml 如果存在就麻烦了---不存在,则直接读取配置文件 //---先加载项目级配置,把不可见的项,设置为不可配置 //---如果是用户配置则 "再加载用户级配置",否则退出 //---再把不可配置项设为不可见 //if (System.IO.File.Exists(EPConfigXML)) //{ // layoutControl.RestoreLayoutFromXml(EPConfigXML); // if (view is DevExpress.XtraGrid.Views.Grid.GridView) // { // foreach (DevExpress.XtraGrid.Columns.GridColumn gridCol in ((DevExpress.XtraGrid.Views.Grid.GridView)view).Columns) // { // gridCol.OptionsColumn.ShowInCustomizationForm = gridCol.Visible; // } // } // //然后加载用户级配置 // if (filePath.Equals(EPConfigXML)) // { // break; // } // view.RestoreLayoutFromXml(filePath); // //然后再次检查,把项目级不可见的,也设为不可见 // if (view is DevExpress.XtraGrid.Views.Grid.GridView) // { // foreach (DevExpress.XtraGrid.Columns.GridColumn gridCol in ((DevExpress.XtraGrid.Views.Grid.GridView)view).Columns) // { // gridCol.Visible = gridCol.OptionsColumn.ShowInCustomizationForm; // } // } //} //else //{ // view.RestoreLayoutFromXml(filePath); //} layoutControl.RestoreLayoutFromXml(filePath); // return true; } else { // return false; } }
/******************************8 * /// <summary> * /// 以窗体Form的名称+"_"+EFDevLayoutControl的名称,以及默认配置模式[暂定用户级]保存grid配置 * /// </summary> * public void SaveLayout(DevExpress.XtraLayout.LayoutControl layoutControl) * { * SaveLayout(layoutControl, ConfigEnum.Default); * } * /// <summary> * /// 以窗体Form的名称+"_"+gridView的名称,以及制定的配置模式保存grid配置 * /// </summary> * /// <param name="ConfigModule">用户级和项目级</param> * public void SaveLayout(DevExpress.XtraLayout.LayoutControl layoutControl, ConfigEnum ConfigModule) * { * this.SaveLayout(layoutControl, ConfigModule, string.Empty, string.Empty); * } ******************************/ /// <summary> /// 文件目录不存在则创建,XML配置名称为: className +"窗体名称_"+EFDevLayoutControl的名称.XML. /// ---2011-10-27 把 XML配置名称 改为 "窗体名称_"+EFDevLayoutControl的名称+_className.XML /// </summary> /// <param name="ConfigModule">配置默认,用户级和项目级</param> /// <param name="className">类名,当画面是配置画面时,为了区分不同窗体而添加类名 </param> /// <param name="moduleName">一级模块名称(如DE,为空时取窗体名称的第4至6位)</param> public void SaveLayout(DevExpress.XtraLayout.LayoutControl layoutControl, ConfigEnum ConfigModule, string className, string moduleName) { //模块名称 string formName = layoutControl.FindForm().Name; if (moduleName.Trim().Equals("")) { moduleName = formName.Length > 6 ? formName.Substring(4, 2) : formName; } if (formName.StartsWith("Form")) { formName = formName.Substring(4); } //XML路径 string fileDirectory = System.Reflection.Assembly.GetExecutingAssembly().Location; fileDirectory = Path.GetDirectoryName(fileDirectory); if (ConfigModule == ConfigEnum.UserConfig) { //位于UserConfig下,用户名文件夹下,一级模块下 fileDirectory = fileDirectory + "\\..\\UserConfig\\" + "EF.EF_Args.formUserId" + "\\" + moduleName + "\\"; } else if (ConfigModule == ConfigEnum.EPConfig) { //位于一级模块下 fileDirectory = fileDirectory + "\\..\\" + moduleName + "\\"; } else { //位于UserConfig下,用户名文件夹下,一级模块下 (默认用户配置) fileDirectory = fileDirectory + "\\..\\UserConfig\\" + "EF.EF_Args.formUserId" + "\\" + moduleName + "\\"; } string fileDirectory2 = ""; try { fileDirectory2 = fileDirectory + "EC.UserConfig.Instance.Culture" + "\\"; } catch { } //文件目录不存在则创建[逻辑上,当是项目配置时,模块目录一定存在,否则报错] if (!System.IO.Directory.Exists(fileDirectory)) { System.IO.Directory.CreateDirectory(fileDirectory); } if (fileDirectory2 != "" && !System.IO.Directory.Exists(fileDirectory2)) { System.IO.Directory.CreateDirectory(fileDirectory2); } //保存文件名 //string fileName = className.Trim() + formName + "_" + layoutControl.Name + ".xml"; // ---2011-10-27 把 XML配置名称 改为 "窗体名称_"+EFDevLayoutControl的名称+_className.XML string fileName = formName + "_" + layoutControl.Name + (className.Trim().Equals("")?"":("_" + className.Trim())) + ".xml"; string filePath = fileDirectory + fileName; string filePath2 = fileDirectory2 + fileName; bool isFirstConfig = false; if (System.IO.File.Exists(filePath)) { if (System.IO.File.Exists(filePath2)) { //文件已存在,则提示,是否覆盖 if (EF.EFMessageBox.Show("配置文件已存在,是否替换?", "提示", MessageBoxButtons.YesNo) != DialogResult.Yes) { return; } } } else { isFirstConfig = false; } if (isFirstConfig) { //即使是第一次配置也不保存到默认目录下.只放到对应语言目录下 // layoutControl.SaveLayoutToXml(filePath); } layoutControl.SaveLayoutToXml(filePath2); }