using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Reflection; using System.Text; using System.Windows.Forms; using WeifenLuo.WinFormsUI.Docking; using YX.Entity; namespace YX { public partial class FrmLeft : DockContent { FrmMain _frmMain; List< Base_SysMenu> m_Parent; YX.BLL.SystemMenu_Bll bll = new BLL.SystemMenu_Bll(); public FrmLeft(FrmMain frmMain) { this._frmMain = frmMain; InitializeComponent(); } /// /// 初始化 /// /// /// private void FrmLeft_Load(object sender, EventArgs e) { Init(); } private void Init() { this.panel1.Controls.Clear(); this.panel1.Controls.Add(this.listView1); this.listView1.Clear(); //查询菜单的父节点,先把父节点打上去 m_Parent = bll.GetSysMenusParent(FrmLogin.LoginUserID); int i = m_Parent.Count; foreach (var item in m_Parent) { Button b = new Button(); b.Text = item.Menu_Name; b.Dock = DockStyle.Top; b.Size = new System.Drawing.Size(244, 30); b.Tag = item.Menu_Id; b.TabIndex = i; b.Click += new System.EventHandler(this.ButtonClick); this.panel1.Controls.Add(b); i--; } } void ButtonClick(object sender, System.EventArgs e) { Button clickedButton = (Button)sender; int clickedButtonTabIndex = clickedButton.TabIndex; foreach (Control ctl in this.panel1.Controls) { if (ctl is Button) { Button btn = (Button)ctl; if (btn.TabIndex > clickedButtonTabIndex) { if (btn.Dock != DockStyle.Bottom) { btn.Dock = DockStyle.Bottom; btn.BringToFront(); } } else { if (btn.Dock != DockStyle.Top) { btn.Dock = DockStyle.Top; btn.BringToFront(); } } } } foreach (var item in m_Parent) { if (clickedButton.Tag.ToString() == item.Menu_Id) { this.listView1.Clear(); //通过父节点去查找子节点绘制 List Childs = bll.GetSysMenuChilds(clickedButton.Tag.ToString(),FrmLogin.LoginUserID); listView1.LargeImageList = new FrmListImages().imageList1; this.listView1.BeginUpdate(); foreach (var itemChilds in Childs) { listView1.Items.Add(new ListViewItem { Text = itemChilds.Menu_Name, Tag = itemChilds.Menu_Tag, Name=itemChilds.Menu_Id, ImageIndex = itemChilds.Menu_Img == null ? 0 : itemChilds.Menu_Img.Value }); } this.listView1.EndUpdate(); break; } } listView1.BringToFront(); } private void listView1_SelectedIndexChanged(object sender, EventArgs e) { try { if (this.listView1.SelectedIndices.Count > 0) { //反射动态实例化窗口 object FrmWindow = this.listView1.SelectedItems[0].Tag; object MenuID = this.listView1.SelectedItems[0].Name; if (CheckFormIsOpen(FrmWindow.ToString())) { //DockContent doc = (DockContent)Assembly.Load("YX").CreateInstance("YX." + FrmWindow); //doc.Show(_frmMain.dockPanel1, DockState.Document); Assembly assembly = Assembly.GetExecutingAssembly(); // 获取当前程序集 object[] parameters = new object[1]; parameters[0] = MenuID; DockContent obj = (DockContent)assembly.CreateInstance("YX." + FrmWindow, true, System.Reflection.BindingFlags.Default, null, parameters, null, null);// 创建类的实例 obj.Show(_frmMain.dockPanel1, DockState.Document); } } } catch (Exception ex) { MessageBox.Show("还没有配置"); } } /// /// 检查窗体是否已经被打开 /// /// /// private bool CheckFormIsOpen(string Forms) { bool bResult = true; foreach (Form frm in Application.OpenForms) { if (frm.Name == Forms) { frm.BringToFront(); bResult = false; break; } } return bResult; } private void 刷新ToolStripMenuItem_Click(object sender, EventArgs e) { Init(); } } }