using DevExpress.XtraBars.Navigation; using DevExpress.XtraTab; using System; using System.Collections.Generic; using System.Data; using System.Drawing; using System.Reflection; using System.Windows.Forms; using Gs.DevApp.ToolBox; using Newtonsoft.Json; using Gs.DevApp.Models; using Newtonsoft.Json.Linq; namespace Gs.DevApp.DevFrm { public partial class FrmMain : DevExpress.XtraBars.FluentDesignSystem.FluentDesignForm { private static Dictionary TabPageDic = new Dictionary(); public FrmMain() { InitializeComponent(); this.Text = this.Text = System.Configuration.ConfigurationSettings.AppSettings.Get("ProductName").ToString(); getTree(); } private void getTree() { toolTime.Text = "登录时间" + LoginInfoModel.CurrentUser.LoginTime; var _obj = new { userGuid = LoginInfoModel.CurrentUser.LoginUserGuid, orgGuid = LoginInfoModel.CurrentUser.LoginOrgGuid, }; string strJson = ""; try { strJson = UtilityHelper.HttpPost("", "User/GetUserLoginInfo", JsonConvert.SerializeObject(_obj)); JObject _job = JObject.Parse(strJson); string rtnCode = _job["rtnCode"].ToString(); string rtnMsg = _job["rtnMsg"].ToString(); barMsg.Caption = rtnMsg; JArray array = new JArray(); var d = _job["rtnData"]["list"]; foreach (var a in d) { array.Add(a); } System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmMain)); DataTable dt = JsonConvert.DeserializeObject(array.ToString()); DataRow[] drGrp = dt.Select("upGuid is null"); foreach (DataRow _dy in drGrp) { AccordionControlElement _grp = this.acrd.AddGroup(); _grp.ImageOptions.Image = UtilityHelper.GetImgFromResource(_dy["icon"].ToString(), 1); _grp.Name = _dy["guid"].ToString(); _grp.Style = DevExpress.XtraBars.Navigation.ElementStyle.Group; _grp.Text = _dy["name"].ToString(); _grp.Tag = _dy["formPath"].ToString(); _grp.Click += _grp_Click; DataRow[] drItem = dt.Select("upGuid='" + _dy["guid"].ToString() + "'"); foreach (DataRow _dy2 in drItem) { AccordionControlElement _itm = this.acrd.AddItem(); _itm.ImageOptions.Image = UtilityHelper.GetImgFromResource(_dy2["icon"].ToString(), 2); _itm.Name = _dy2["guid"].ToString(); _itm.Style = DevExpress.XtraBars.Navigation.ElementStyle.Item; _itm.Text = _dy2["name"].ToString(); _itm.Appearance.Normal.Font = new System.Drawing.Font("Tahoma", 10F); _itm.Tag = _dy2["formPath"].ToString(); _itm.Click += _grp_Click; _grp.Elements.Add(_itm); }; } } catch (Exception ex) { ToolBox.MsgHelper.ShowError("提示:" + ex.Message); } } private void _grp_Click(object sender, EventArgs e) { AccordionControlElement _acd = (AccordionControlElement)sender; if (_acd.Elements.Count > 0) return; string tabPageName = _acd.Name + "_page"; string tabText = _acd.Text; string newFormName = _acd.Tag.ToString(); Image imgIcon = _acd.Image; AddTabpage(tab, tabPageName, tabText, newFormName, imgIcon); } /// /// 新增选项卡页 /// /// 选项卡控件 /// 当期选项卡页name名称 /// 当前选项卡页Text标题 /// 当前选项卡中的新窗体 public void AddTabpage(XtraTabControl tabControl, string tabPageName, string tabText, string newFormName, Image imgIcon) { if (IsTabpageExsit(tabControl, tabPageName)) { return; } XtraTabPage newPage = new XtraTabPage(); newPage.Name = tabPageName; newPage.Text = tabText; newPage.Tooltip = (tabText); newPage.ImageOptions.Image = imgIcon; if (AddNewForm(newFormName) != null) { newPage.Controls.Add(AddNewForm(newFormName)); tabControl.TabPages.Add(newPage); TabPageDic.Add(tabPageName, newPage); tabControl.SelectedTabPage = newPage; } } /// /// 移除选项卡页 /// /// /// /// public void RemoveTabPage(XtraTabControl tabControl, EventArgs e) { DevExpress.XtraTab.ViewInfo.ClosePageButtonEventArgs args = (DevExpress.XtraTab.ViewInfo.ClosePageButtonEventArgs)e; string name = args.Page.Tooltip; MessageBox.Show(name); foreach (XtraTabPage item in tabControl.TabPages) { if (item.Name == name) { MessageBox.Show(item.Name); tabControl.TabPages.Remove(item); item.Dispose(); TabPageDic.Remove(name); return; } } } /// /// 判断选项卡是否已经存在 /// /// 选项卡控件 /// 选项卡名称 /// private bool IsTabpageExsit(XtraTabControl tabControl, string tabPageName) { foreach (var item in TabPageDic) { if (item.Key == tabPageName) { tabControl.SelectedTabPage = item.Value; return true; } } return false; } /// /// 在选项卡中生成窗体 /// /// 窗体名称 private Form AddNewForm(string formName) { Form newForm = (Form)Assembly.GetExecutingAssembly().CreateInstance(formName); if (newForm == null) { Gs.DevApp.ToolBox.MsgHelper.ShowError("请检查是否开通了该模块!"); return null; } newForm.FormBorderStyle = FormBorderStyle.None; newForm.TopLevel = false; newForm.ControlBox = false; newForm.Dock = DockStyle.Fill; newForm.Visible = true; return newForm; } } }