zoukankan      html  css  js  c++  java
  • 动态生成ContextMenuStrip

    数据表:

    代码:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Data.SqlClient;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    
    namespace WindowsFormsApplication25
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            /// <summary>
            /// 窗体加载事件
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void Form1_Load(object sender, EventArgs e)
            {
                ToolStripMenuItem tmpItem = new ToolStripMenuItem("移动到");
                this.contextMenuStrip1.Items.Add(tmpItem);
    
                CreateContextMenuStrip(tmpItem.DropDownItems, GetTable(), 1);
            }
    
             /// <summary>
             /// ContextMenuStrip中DropDownItem单击事件
          /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            void MenuClicked(object sender, EventArgs e)
            {
                MessageBox.Show((sender as ToolStripMenuItem).Text);
            }
    
            /// <summary>
            /// 递归生成ContextMenuStrip
            /// </summary>
            /// <param name="items"></param>
            /// <param name="dt"></param>
            /// <param name="parentId"></param>
            public void CreateContextMenuStrip(ToolStripItemCollection items, DataTable dt, int parentId)
            {
                if (dt.Rows.Count == 0)
                    return;
                string fliter = string.Format("ParentGroup={0}", parentId);
                DataRow[] dr = dt.Select(fliter);
                foreach (DataRow row in dr)
                {
                    ToolStripMenuItem menuitem;
                    menuitem = new ToolStripMenuItem();
                    menuitem.Text = row["GroupName"].ToString();
                    menuitem.Name = row["ID"].ToString();
                    menuitem.Click += new EventHandler(MenuClicked);
                    items.Add(menuitem);
                    CreateContextMenuStrip(menuitem.DropDownItems, dt, Convert.ToInt32(row["ID"]));
                    dt.Rows.Remove(row);
                }
            }
    
            /// <summary>
            /// 获取数据源
            /// </summary>
            /// <returns></returns>
            DataTable GetTable()
            {
                SqlDataAdapter da = new SqlDataAdapter("select * from ReportGroup", "server=(local);uid=sa;pwd=123;database=ExcelMaster;");
                DataTable dt = new DataTable();
                da.Fill(dt);
                return dt;
            }
    
        }
    }

    结果:

  • 相关阅读:
    关于属性值
    REG小探
    纯CSS实现立方体旋转
    css3总结(三)立方体、动画、web字体、字体图标、弹性布局、多列布局、伸缩盒子
    css3总结(二)背景色渐变、background、边框图片、过渡、2d变换、3d变换
    css3总结(一)属性选择器、伪类、伪元素、盒模型、边框圆角、文本阴影、边框阴影
    自定义视频播放器(功能包括:播放/暂停,全屏,跳播)
    html5总结
    Git workflow- Git 工作流
    nodejs使用redis实现sub/pub
  • 原文地址:https://www.cnblogs.com/lisengl/p/2587425.html
Copyright © 2011-2022 走看看