yantian yue
2023-12-28 fd5f7c86beec35f6b7cde3f16f23c6cf1279a447
提交 | 用户 | 时间
e46d3b 1 using System;
2 using System.Collections.Generic;
3 using System.ComponentModel;
4 using System.Data;
5 using System.Drawing;
6 using System.Linq;
7 using System.Reflection;
8 using System.Text;
9 using System.Windows.Forms;
10 using WeifenLuo.WinFormsUI.Docking;
11 using YX.Entity;
12
13 namespace YX
14 {
15     public partial class FrmLeft : DockContent
16     {
17         FrmMain _frmMain;
18        List< Base_SysMenu> m_Parent;
19         YX.BLL.SystemMenu_Bll bll = new BLL.SystemMenu_Bll();
20         public FrmLeft(FrmMain frmMain)
21         {
22             this._frmMain = frmMain;
23             InitializeComponent();
24         }
25         /// <summary>
26         /// 初始化
27         /// </summary>
28         /// <param name="sender"></param>
29         /// <param name="e"></param>
30         private void FrmLeft_Load(object sender, EventArgs e)
31         {
32             Init();
33         }
34         private void Init()
35         {
36             this.panel1.Controls.Clear();
37             this.panel1.Controls.Add(this.listView1);
38             this.listView1.Clear();
39             //查询菜单的父节点,先把父节点打上去
40             m_Parent = bll.GetSysMenusParent(FrmLogin.LoginUserID);
41             int i = m_Parent.Count;
42             foreach (var item in m_Parent)
43             {
44                 Button b = new Button();
45                 b.Text = item.Menu_Name;
46                 b.Dock = DockStyle.Top;
47                 b.Size = new System.Drawing.Size(244, 30);
48                 b.Tag = item.Menu_Id;
49                 b.TabIndex = i;
50                 b.Click += new System.EventHandler(this.ButtonClick);
51                 this.panel1.Controls.Add(b);
52                 i--;
53             }
54         }
55         void ButtonClick(object sender, System.EventArgs e)
56         {          
57             Button clickedButton = (Button)sender;          
58             int clickedButtonTabIndex = clickedButton.TabIndex;        
59             foreach (Control ctl in this.panel1.Controls)
60             {
61                 if (ctl is Button)
62                 {
63                     Button btn = (Button)ctl;
64                     if (btn.TabIndex > clickedButtonTabIndex)
65                     {
66                         if (btn.Dock != DockStyle.Bottom)
67                         {
68                             btn.Dock = DockStyle.Bottom;
69
70                             btn.BringToFront();
71                         }
72                     }
73                     else
74                     {
75                         if (btn.Dock != DockStyle.Top)
76                         {
77                             btn.Dock = DockStyle.Top;
78                             btn.BringToFront();
79                         }
80                     }
81                 }
82             }
83             foreach (var item in m_Parent)
84             {
85                  if (clickedButton.Tag.ToString() == item.Menu_Id)
86                  {
87                      this.listView1.Clear();
88        
89                     //通过父节点去查找子节点绘制
90                      List<Base_SysMenu> Childs = bll.GetSysMenuChilds(clickedButton.Tag.ToString(),FrmLogin.LoginUserID);
91                      listView1.LargeImageList = new FrmListImages().imageList1;
92                      this.listView1.BeginUpdate();
93
94                      foreach (var itemChilds in Childs)
95                      {
96                          listView1.Items.Add(new ListViewItem 
97                          { 
98                              Text = itemChilds.Menu_Name,
99                              Tag = itemChilds.Menu_Tag,
100                              Name=itemChilds.Menu_Id,
101                              ImageIndex = itemChilds.Menu_Img == null ? 0 : itemChilds.Menu_Img.Value 
102                          });
103
104                      }
105
106                      this.listView1.EndUpdate();
107                      break;
108                  }
109             }
110             listView1.BringToFront();  
111            
112         }
113
114         private void listView1_SelectedIndexChanged(object sender, EventArgs e)
115         {
116             try
117             {
118                 if (this.listView1.SelectedIndices.Count > 0)
119                 {
120                     //反射动态实例化窗口
121                     object FrmWindow = this.listView1.SelectedItems[0].Tag;
122                     object MenuID = this.listView1.SelectedItems[0].Name;
123                     if (CheckFormIsOpen(FrmWindow.ToString()))
124                     {
125                         //DockContent doc = (DockContent)Assembly.Load("YX").CreateInstance("YX." + FrmWindow);
126                         //doc.Show(_frmMain.dockPanel1, DockState.Document);
127
128                         Assembly assembly = Assembly.GetExecutingAssembly(); // 获取当前程序集                   
129                         object[] parameters = new object[1];
130                         parameters[0] = MenuID;
131                         DockContent obj = (DockContent)assembly.CreateInstance("YX." + FrmWindow, true, System.Reflection.BindingFlags.Default, null, parameters, null, null);// 创建类的实例 
132                         obj.Show(_frmMain.dockPanel1, DockState.Document);
133                     }
134                 }
135             }
136             catch (Exception ex)
137             {
138                 MessageBox.Show("还没有配置");
139             }
140         }
141
142         /// <summary>
143         /// 检查窗体是否已经被打开
144         /// </summary>
145         /// <param name="ChildForm"></param>
146         /// <returns></returns>
147
148         private bool CheckFormIsOpen(string Forms)
149         {
150             bool bResult = true;
151             foreach (Form frm in Application.OpenForms)
152             {
153                 if (frm.Name == Forms)
154                 {
155                     frm.BringToFront();
156                     bResult = false;
157                     break;
158                 }
159             }
160             return bResult;
161         }
162
163         private void 刷新ToolStripMenuItem_Click(object sender, EventArgs e)
164         {
165           
166             Init();
167         }
168     }
169 }