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

            /*快捷菜单*/
            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() + "|"); }
        }

 

猜你喜欢

转载自blog.csdn.net/xianfajushi/article/details/7703807
今日推荐