一、效果圖,動態加載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