WinForm-MenuStrip

 1 ToolStrip menuStrip1;
 2         public Form1()
 3         {
 4             InitializeComponent();
 5             menuStrip1 = new ToolStrip();
 6             this.Controls.Add(menuStrip1);
 7         }
 8 
 9         private void Form1_Load(object sender, EventArgs e)
10         {
11             //添加菜单一
12             ToolStripMenuItem subItem;
13             subItem = AddContextMenu("入库", menuStrip1.Items, null);
14             //添加子菜单
15             ToolStripMenuItem grandsonItem;
16             grandsonItem = AddContextMenu("添加入库", subItem.DropDownItems, new EventHandler(MenuClicked));
17             AddContextMenu("大米", grandsonItem.DropDownItems, new EventHandler(MenuClicked));
18             AddContextMenu("入库管理", subItem.DropDownItems, new EventHandler(MenuClicked));
19 
20 
21             //添加菜单二
22             subItem = AddContextMenu("出库", menuStrip1.Items, null);
23             //添加子菜单
24             AddContextMenu("添加出库", subItem.DropDownItems, new EventHandler(MenuClicked));
25             AddContextMenu("出库管理", subItem.DropDownItems, new EventHandler(MenuClicked));
26         }
27         /// <summary>
28         /// 添加子菜单
29         /// </summary>
30         /// <param name="text">要显示的文字,如果为 - 则显示为分割线</param>
31         /// <param name="cms">要添加到的子菜单集合</param>
32         /// <param name="callback">点击时触发的事件</param>
33         /// <returns>生成的子菜单,如果为分隔条则返回null</returns>
34 
35         ToolStripMenuItem AddContextMenu(string text, ToolStripItemCollection cms, EventHandler callback)
36         {
37             if (text == "-")
38             {
39                 ToolStripSeparator tsp = new ToolStripSeparator();
40                 cms.Add(tsp);
41                 return null;
42             }
43             else if (!string.IsNullOrEmpty(text))
44             {
45                 ToolStripMenuItem tsmi = new ToolStripMenuItem(text);
46                 tsmi.Tag = text + "TAG";
47                 if (callback != null) tsmi.Click += callback;
48                 cms.Add(tsmi);
49 
50                 return tsmi;
51             }
52 
53             return null;
54         }
55 
56         void MenuClicked(object sender, EventArgs e)
57         {
58             //以下主要是动态生成事件并打开窗体
59 
60             //((sender as ToolStripMenuItem).Tag)强制转换
61 
62             ObjectHandle t = Activator.CreateInstance("WinForms", "WinForms.Form2");
63             Form f = (Form)t.Unwrap();
64             f.ShowDialog();
65 
66         }
原文地址:https://www.cnblogs.com/ankeyliu/p/4424841.html