C#静态添加左键菜单、联系关系数据及相干变乱利_奇闻趣事网

C#静态添加左键菜单、联系关系数据及相干变乱利

奇闻趣事 2023-05-04 17:38www.bnfh.cn奇闻趣事

C#动态添加右键菜单、关联数据及相关事件使用的示例

上次研究了一下正常的菜单,今天来研究一下控件的右键菜单项,差不太多。


先添加2个右键菜单控件,一个直接添加菜单,另一个用来动态添加菜单

分别给label1和label2关联菜单

直接上代码了

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Draing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windos.Forms;

namespace yjcd
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            //直接给写好的菜单加事件
            //主要是遍历所有菜单及子菜单
            //根据点击菜单文本做出判断
            AddMenuEvents(contextMenuStrip1);

            //动态添加菜单,并添加事件
            //可以用递归来添加子菜单
            //这里我只加了一层
            //加了 tag 属性传递数据
            GetMenus();
        }

        //测试的数据源
        DataTable GetDT()
        {
            DataTable mydt = ne DataTable();

            DataColumn dc0 = mydt.Columns.Add("ID", typeof(Int32));
            DataColumn dc1 = ne DataColumn();
            mydt.Columns.Add(dc1);

            for (int i = 0; i < 5; i++)
            {
                DataRo neRo = mydt.NeRo();
                neRo[0] = i;

                //这个用来做与菜单关联的数据
                //实际上想传什么就传什么
                //MenuCMD 中会用到
                neRo[1] = i + 100;

                //在面插入数据
                mydt.Ros.Add(neRo);
            }

            return mydt;
        }

        void GetMenus()
        {
            DataTable dt = GetDT();

            int ro = dt.Ros.Count;
            for (int i = 0; i < ro; i++)
            {
                contextMenuStrip2.Items.Add(dt.Ros[i][0].ToString().Trim());
                contextMenuStrip2.Items[i].Tag = dt.Ros[i][1].ToString().Trim();
            }

            AddMenuEvents(contextMenuStrip2);
        }

        void AddMenuEvents(ContextMenuStrip m)
        {
            foreach (ToolStripItem items in m.Items)
            {
                if (items is ToolStripMenuItem)
                {
                    ChildMenu((ToolStripMenuItem)items);
                }
            }
        }
        void ChildMenu(ToolStripMenuItem menu)
        {
            if (menu.HasDropDonItems)
            {
                foreach (ToolStripMenuItem m in menu.DropDonItems)
                {
                    ChildMenu(m);
                }
            }
            else
            {
                menu.Click += ne EventHandler(MenuCMD);
            }
        }
        void MenuCMD(object sender, EventArgs e)
        {
            ToolStripMenuItem ts = (sender as ToolStripMenuItem);
            string thecmdstr = ts.Text;

            string thetag = "没有";
            if(ts.Tag != null) { thetag = ts.Tag.ToString(); }

            sitch (thecmdstr)
            {
                case "AA":
                    label2.Text = "AA";
                    break;
                case "0":
                    label2.Text = "数据为 " + thetag;
                    break;
                default:
                    break;
            }
        }
    }
}

运行结果

Copyright © 2016-2025 www.bnfh.cn 怪异网 版权所有 Power by