/
MenuManager.cs
171 lines (126 loc) · 5.96 KB
/
MenuManager.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
using System;
using System.Collections.Generic;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Windows.Forms;
using DevExpress.Utils;
using DevExpress.XtraNavBar;
using DevExpress.XtraTreeList;
namespace ERPProject
{
public class MenuManager
{
private ERPDataDataContext context=new ERPDataDataContext();
private List<Module> menuGroup;
private int count = 0;
public void GetMenu(NavBarControl navBarControl,ImageList images)
{
menuGroup = context.Module.Where(m => m.MpParentCode == "0").ToList<Module>();
if (menuGroup.Count>0)
{
foreach (Module module in menuGroup)
{
// 新建NavBarGroup
NavBarGroup group=new NavBarGroup();
group.Caption = module.MpName;
group.GroupClientHeight = 80;
group.GroupStyle = DevExpress.XtraNavBar.NavBarGroupStyle.ControlContainer;
//group.Appearance.Options.UseTextOptions = true;
//group.Appearance.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
group.Name = module.MpCode;
NavBarGroupControlContainer controlContainer=new NavBarGroupControlContainer();
controlContainer.Name = module.MpName + module.MpCode;
controlContainer.Size = new System.Drawing.Size(140, 175);
group.LargeImage = images.Images[count++];
#region 创建树
// TreeList treeNode = new TreeList();
TreeView treeNode=new TreeView();
treeNode.NodeMouseDoubleClick += new TreeNodeMouseClickEventHandler(treeNode_NodeMouseDoubleClick);
// treeNode.TreeListMenuItemClick += new TreeListMenuItemClickEventHandler(treeNode_TreeListMenuItemClick);
treeNode.Size = controlContainer.Size;
treeNode.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
treeNode.Location = new System.Drawing.Point(0, 0);
treeNode.Name = module.MpCode;
treeNode.ImageList = images;
foreach (Module subModule in context.Module)
{
if (subModule.MpParentCode == treeNode.Name)
{
var subsubTreeNode = new TreeNode();
subsubTreeNode.Text = subModule.MpName; //目录名
subsubTreeNode.Name = subModule.MpCode; //编号
subsubTreeNode.ToolTipText = subModule.MpParentCode; //获取或设置当鼠标指针悬停于 TreeNode 之上时显示的文本。
subsubTreeNode.ImageIndex = count++;
treeNode.Nodes.Add(subsubTreeNode);
GetSubMenu(subsubTreeNode);
}
}
#endregion
// 添加
controlContainer.Controls.Add(treeNode);
group.ControlContainer = controlContainer;
navBarControl.Controls.Add(controlContainer);
navBarControl.Groups.Add(group);
}
}
}
void treeNode_TreeListMenuItemClick(object sender, TreeListMenuItemClickEventArgs e)
{
string ls_form;
ls_form = e.MenuItem.Caption;
if (String.IsNullOrEmpty(ls_form))
return;
//防止一个窗口打开多次
if (Application.OpenForms[ls_form] != null)
{
Application.OpenForms[ls_form].Activate();
return;
}
var frm = new DepartmentForm();
MainForm main = Application.OpenForms[0] as MainForm;
frm.Text = ls_form;
frm.MdiParent = main;
frm.Show();
}
void treeNode_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e)
{
string ls_form;
ls_form = e.Node.Text;
if(String.IsNullOrEmpty(ls_form))
return;
//防止一个窗口打开多次
if (Application.OpenForms[ls_form] != null)
{
Application.OpenForms[ls_form].Activate();
return;
}
var frm = new DepartmentForm();
MainForm main=Application.OpenForms[0] as MainForm;
frm.Text = ls_form;
frm.Name = ls_form;
frm.MdiParent = main;
frm.Show();
}
private void GetSubMenu(TreeNode treeNode)
{
foreach (Module module in context.Module)
{
if (module.MpParentCode==treeNode.Name)
{
var mTreeNode = new TreeNode();
mTreeNode.Text = module.MpName;
mTreeNode.Name = module.MpCode;
mTreeNode.ToolTipText = module.MpParentCode;
mTreeNode.ImageIndex = count++;
treeNode.Nodes.Add(mTreeNode);
GetSubMenu(mTreeNode);
}
}
}
}
}