动态创建无级子菜单:乾坤大挪移无极紫菜汤

来源:互联网 发布:淘宝直播海报图片 编辑:程序博客网 时间:2024/06/09 17:14
            /*快捷菜单*/            ContextMenuStrip 测试快捷 = new ContextMenuStrip();            /*主菜单=名称|图标索引*/            /*子菜单子参数:乾坤大挪移=上级菜单索引|移动菜单索引:移一个菜单主菜单下位索引-1*/            /*事件*/            /*加载赋值*/            /*九九乘法表-紫菜汤-顺序排列*/            string[] 九九乘法表 = new string[81]; int 索引 = 0;            for (int i = 1; i <= 9; i++)            {                for (int j = 1; j <= 9; j++)                {                    九九乘法表[索引] = i.ToString() + "×" + j.ToString() + "=" + (i * j).ToString() + "|";                    索引++;                }            }//,九九乘法表乾坤大挪移参数 = new string[81]为了体现就不自动生成了。            string[] 九九乘法表乾坤大挪移参数 = new string[] {                 "0|1", "0|0|1", "0|0|0|1", "0|0|0|0|1", "0|0|0|0|0|1", "0|0|0|0|0|0|1", "0|0|0|0|0|0|0|1", "0|0|0|0|0|0|0|0|1",                "1|2", "1|0|2", "1|0|0|2", "1|0|0|0|2", "1|0|0|0|0|2", "1|0|0|0|0|0|2", "1|0|0|0|0|0|0|2", "1|0|0|0|0|0|0|0|2",                "2|3", "2|0|3", "2|0|0|3", "2|0|0|0|3", "2|0|0|0|0|3", "2|0|0|0|0|0|3", "2|0|0|0|0|0|0|3", "2|0|0|0|0|0|0|0|3",                "3|4", "3|0|4", "3|0|0|4", "3|0|0|0|4", "3|0|0|0|0|4", "3|0|0|0|0|0|4", "3|0|0|0|0|0|0|4", "3|0|0|0|0|0|0|0|4",                "4|5", "4|0|5", "4|0|0|5", "4|0|0|0|5", "4|0|0|0|0|5", "4|0|0|0|0|0|5", "4|0|0|0|0|0|0|5", "4|0|0|0|0|0|0|0|5",                "5|6", "5|0|6", "5|0|0|6", "5|0|0|0|6", "5|0|0|0|0|6", "5|0|0|0|0|0|6", "5|0|0|0|0|0|0|6", "5|0|0|0|0|0|0|0|6",                "6|7", "6|0|7", "6|0|0|7", "6|0|0|0|7", "6|0|0|0|0|7", "6|0|0|0|0|0|7", "6|0|0|0|0|0|0|7", "6|0|0|0|0|0|0|0|7",                "7|8", "7|0|8", "7|0|0|8", "7|0|0|0|8", "7|0|0|0|0|8", "7|0|0|0|0|0|8", "7|0|0|0|0|0|0|8", "7|0|0|0|0|0|0|0|8",                "8|9", "8|0|9", "8|0|0|9", "8|0|0|0|9", "8|0|0|0|0|9", "8|0|0|0|0|0|9", "8|0|0|0|0|0|0|9", "8|0|0|0|0|0|0|0|9"            };            //快捷菜单(测试快捷, 九九乘法表, null);            //乾坤大挪移(测试快捷, 九九乘法表乾坤大挪移参数);            this.BeginInvoke(new 快捷(快捷菜单), 测试快捷, 九九乘法表, null);            this.BeginInvoke(new 乾坤挪移(乾坤大挪移), 测试快捷, 九九乘法表乾坤大挪移参数);            this.ContextMenuStrip = 测试快捷;
        private void 快捷菜单(ContextMenuStrip 菜单名, string[] 参数, EventHandler[] 事件)        {            int 计数 = 0;            foreach (string 元素 in 参数)            {                string[] 列表 = 元素.Split('|');                if (列表[0].Length > 0) 菜单名.Items.Add(列表[0]);                if (列表[1].Length > 0) 菜单名.Items[计数].Image = 图标集.Images[int.Parse(列表[1])];                if (事件 != null) if (事件[计数] != null) 菜单名.Items[计数].Click += new EventHandler(事件[计数]);                计数++;            }            菜单名.Items[0].BackColor = System.Drawing.Color.Aqua;            //return 菜单名;//ContextMenuStrip        }        private void 乾坤大挪移(ContextMenuStrip 菜单名, string[] 子参数)        {            foreach (string 元素 in 子参数)            {                string[] 列表 = 元素.Split('|');                ToolStripDropDownItem 菜单位置 = (ToolStripDropDownItem)菜单名.Items[int.Parse(列表[0])];                if (列表.Length > 2)//无极紫菜汤                    for (int 无极 = 1; 无极 < 列表.Length - 1; 无极++)                    { 菜单位置 = 无极之菜单(菜单位置, int.Parse(列表[无极])); }                ToolStripItem 子菜单名 = 菜单名.Items[int.Parse(列表[列表.Length - 1])];                菜单位置.DropDownItems.Add(子菜单名);            }        }        private ToolStripDropDownItem 无极之菜单(ToolStripDropDownItem 级, int 位置)        {            ToolStripDropDownItem 无极 = (ToolStripDropDownItem)级.DropDownItems[位置];            return 无极;        }
        EventHandler[] 主体快捷事件 = new EventHandler[] { null, null, 曲线QToolStripMenuItem_Click, 选项OToolStripMenuItem_Click, 农历NToolStripMenuItem_Click, null, null, 农历ToolStripMenuItem3_Click, (sender1, e1) => { 选项卡.SelectedIndex = 选项卡.TabPages.IndexOfKey("附件"); }, 退出XToolStripMenuItem_Click };

需要说明的是菜单事件必须与菜单名称对应,数量相等,没事件的可以写null;

光菜汤写一大堆代码确实头大,这几天不知怎么啦,跟这些菜汤干上了,功夫不负有心人,下午终于归纳导出:乾坤大挪移无极紫菜汤;这些天经过一番推理,证明这种写法是合理而且容易理解思路清晰。

知道写得不好,欢迎提提建议,我只想用我的方法来写,证明写程序是很灵活的,也是头脑所想的,只要有办法,可以心想事成。

/*九九乘法表-紫菜汤-梯形排列*/            string[] 九九乘法表 = new string[45]; int 索引 = 0;            for (int i = 1; i <= 9; i++)            {                for (int j = i; j <= 9; j++)                {                    九九乘法表[索引] = i.ToString() + "×" + j.ToString() + "=" + (i * j).ToString() + "|";                    索引++;                }            }            string[] 九九乘法表乾坤大挪移参数 = new string[] {                 "1|9", "2|9", "3|9", "4|9", "5|9", "6|9", "7|9", "8|9",                "2|0|9", "3|0|9", "4|0|9", "5|0|9", "6|0|9", "7|0|9", "8|0|9",                "3|0|0|9", "4|0|0|9", "5|0|0|9", "6|0|0|9", "7|0|0|9", "8|0|0|9",                "4|0|0|0|9", "5|0|0|0|9", "6|0|0|0|9", "7|0|0|0|9", "8|0|0|0|9",                "5|0|0|0|0|9", "6|0|0|0|0|9", "7|0|0|0|0|9", "8|0|0|0|0|9",                "6|0|0|0|0|0|9", "7|0|0|0|0|0|9", "8|0|0|0|0|0|9",                "7|0|0|0|0|0|0|9", "8|0|0|0|0|0|0|9",                "8|0|0|0|0|0|0|0|9"            };

 /*下列的就不做出排列了,留给有兴趣的人去玩。*/

            for (int i = 1, j = 1; j <= 9; i++)            {                九九乘法表[索引] = i.ToString() + "×" + j.ToString() + "=" + (i * j).ToString() + "|";                if (j == i) { i = 0; j++; }                索引++;            }

 /*下列递归算法:递归就是不断压入栈的过程,从9一直压入栈中到1;条件满足后,执行是从最后压入栈取出开始。九九乘法表递归(9);*/

ArrayList 九九乘法表 = new ArrayList();        public void 九九乘法表递归(int 数值)        {            if (数值 <= 0) return;            九九乘法表递归(数值 - 1);            for (int 递归 = 1; 递归 <= 数值; 递归++)            { 九九乘法表.Add(数值 + "×" + 递归 + "=" + (递归 * 数值).ToString() + "|"); }        }

 

原创粉丝点击