C#自定義控件、用戶控件、動態加載菜單按鈕


一、效果圖,動態加載5個菜單按鈕;

二、實現方法

  1、創建用戶控件

  2、在用戶控件拖入toolStrip

  3、進入用戶控件的Lood事件,這里自動添加5個選  ToolStripMenuItem,后期大家自己可以擴展這個方法。  

    自定義控件效果圖:

    

        /// <summary>
        /// 控件加載事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void LanMenu_Load(object sender, EventArgs e)
        {
            for (int i = 0; i <5; i++)
            {
                ToolStripMenuItem Nbi = new ToolStripMenuItem();
                Nbi.Text ="測試"+i;
                Nbi.Name ="TStest"+i;//按鈕名稱  
                Nbi.Click += Nbi_Click;
                this.toolStrip1.Items.Add(Nbi);
            }
        }
        /// <summary>
        /// ToolStripMenuItem 動態添加的 每個按鈕的事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void Nbi_Click(object sender, EventArgs e)
        {
            if (UserControlMenuItemClick != null)
                UserControlMenuItemClick(sender, e);
        }

  4、定義委托和事件

        //定義事件
        public event StripMenuItemClick UserControlMenuItemClick;
        //定義委托
        public delegate void StripMenuItemClick(object sender, EventArgs e); 

  5、將自定義控件拖到窗體里面效果圖:

    這些測試按鈕,是在第三點的時候添加的,后期可以不要第3點的添加按鈕的方法,可以設計數據庫,或者其他文件里面讀取數據,自動添加按鈕。

    

  6、自定義控件里面的每一個按鈕的點擊事件,在自定義控件屬性事件里面找到我們定義的控件,雙擊進入。

    

    編輯代碼:    

        /// <summary>
        /// 自定義控件里面的按鈕的點擊事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void lanMenu1_UserControlMenuItemClick(object sender, EventArgs e)
        {
            //獲取當前點擊的是自定義控件里面的哪一個按鈕
            ToolStripMenuItem Nbi = (ToolStripMenuItem)sender;
            //彈出按鈕的名稱、按鈕上面的文本
            MessageBox.Show(Nbi.Name + ":" + Nbi.Text);
        }

  7、最終顯示效果:

    點擊“測試0按鈕”

    

 

    點擊“測試1按鈕”

           

 

 

 

程序源碼:下 載 地 址

 

 

 

我的TB地址:https://shop115363898.taobao.com/?spm=a313o.7775905.1998679131.d0011.NJTv4h

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM