zoukankan      html  css  js  c++  java
  • C# WinForm 用MenuStrip动态生成菜单并动态加载事件

    最近在做WINFORM开发,一直都在为主界面的点击事件及动态加载菜单苦脑。现在已解决这个问题了,可以实现数据库或都XML等配置完成动态生成菜单及事件加载。代码如下:

    private void Form1_Load(object sender, EventArgs e)
            {
                //添加菜单一 
                ToolStripMenuItem subItem;
                subItem = AddContextMenu("入库", menuStrip1.Items, null);
                //添加子菜单 
                AddContextMenu("添加入库", subItem.DropDownItems, new EventHandler(MenuClicked));
                AddContextMenu("入库管理", subItem.DropDownItems, new EventHandler(MenuClicked));

                //添加菜单二 
                subItem = AddContextMenu("出库", menuStrip1.Items, null);
                //添加子菜单 
                AddContextMenu("添加出库", subItem.DropDownItems, new EventHandler(MenuClicked));
                AddContextMenu("出库管理", subItem.DropDownItems, new EventHandler(MenuClicked));
            }

          /// <summary>
            
    /// 添加子菜单
            
    /// </summary>
            
    /// <param name="text">要显示的文字,如果为 - 则显示为分割线</param>
            
    /// <param name="cms">要添加到的子菜单集合</param>
            
    /// <param name="callback">点击时触发的事件</param>
            
    /// <returns>生成的子菜单,如果为分隔条则返回null</returns>

            ToolStripMenuItem AddContextMenu(string text, ToolStripItemCollection cms, EventHandler callback)
            {
                if (text == "-")
                {
                    ToolStripSeparator tsp = new ToolStripSeparator();
                    cms.Add(tsp);
                    return null;
                }
                else if (!string.IsNullOrEmpty(text))
                {
                    ToolStripMenuItem tsmi = new ToolStripMenuItem(text);
                    tsmi.Tag = text + "TAG";
                    if (callback != null) tsmi.Click += callback;
                    cms.Add(tsmi);

                    return tsmi;
                }

                return null;
            }

            void MenuClicked(object sender, EventArgs e)
            {
         //以下主要是动态生成事件并打开窗体

        
    //((sender as ToolStripMenuItem).Tag)强制转换

               ObjectHandle t = Activator.CreateInstance("WinForms""WinForms.Form2");
                Form f = (Form)t.Unwrap();
                f.ShowDialog();

            }
  • 相关阅读:
    jq 编写弹窗
    jq 编写选项卡
    event 事件 自定义滚动条 控制文字滚动
    Integer Partition Algorithm
    Implement the integral part logn base 2 with bit manipulations
    **Nim Game hard hard version
    *Check whether a given graph is Bipartite or not
    *Flatten a multilevel linked list
    Priority Queue Implementation
    Find the Minimum length Unsorted Subarray, sorting which makes the complete array sorted
  • 原文地址:https://www.cnblogs.com/Footprints/p/2665406.html
Copyright © 2011-2022 走看看