SideBar已經(jīng)玩過怎么實現(xiàn)動態(tài)菜單欄了. 那么利用explorerBar控件如何實現(xiàn)? 廢話不說了,直接上代碼.

創(chuàng)新互聯(lián)于2013年成立,先為全州等服務(wù)建站,全州等地企業(yè),進行企業(yè)商務(wù)咨詢服務(wù)。為全州企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
#region 菜單定義 private DataTable dt_role = new DataTable(); private SqlDB SQL_Base = new SqlDB(); string strMenu = string.Empty;//用于臨時保存主模塊名稱 ExplorerBarGroupItem groupBox1; ButtonItem buttonItem1; ExplorerBarGroupItem groupBox2 = null;//用于臨時保存主模塊的控件類型 #endregion
#region 左邊菜單欄設(shè)置,因為dockPanel布局是以這個作主界面的,所以利用函數(shù),傳用WinForm名稱。
private Dictionary<string, DockContent> m_FunctionName = new Dictionary<string, DockContent>();
/// <summary>
/// 傳入Form名稱,調(diào)用時直接打開Form,并顯示在dockPanel布局里面。(左邊菜單欄設(shè)置)
/// </summary>
/// <param name="frmName"></param>
public void showFunctionFrm(string frmName)
{
if (!m_FunctionName.ContainsKey(frmName))
{
m_FunctionName.Add(frmName, null);
}
if (m_FunctionName[frmName] == null || m_FunctionName[frmName].IsDisposed)//如果已經(jīng)打的Form,則不再打開。
{
ObjectHandle obj = Activator.CreateInstance(Assembly.GetExecutingAssembly().GetName().Name, frmName);
m_FunctionName[frmName] = (DockContent)obj.Unwrap();
}
m_FunctionName[frmName].AutoHidePortion = 0.15;
m_FunctionName[frmName].Show(dockPanel1, DockState.Document);
}
#endregion #region 顯示菜單函數(shù)
private void Menu_Load()
{
dt_role = SQL_Base._GetUserRole(SessionInfo._GroupID);//查找登錄者的權(quán)限
for (int i = 0; i < dt_role.Rows.Count; i++)
{
//if用于判斷,如果是相同主模塊,則不再重復添加控件。
if (string.IsNullOrEmpty(strMenu) || strMenu != dt_role.Rows[i]["c_MenuGroupName"].ToString())
{
groupBox1 = new ExplorerBarGroupItem();
groupBox1.SetDefaultAppearance();
groupBox1.Expanded = true;
groupBox1.Text = strMenu = dt_role.Rows[i]["c_MenuGroupName"].ToString();
groupBox1.Tag = dt_role.Rows[i]["c_MenuGroupName"].ToString();
explorerBar1.Groups.AddRange(new ExplorerBarGroupItem[] { groupBox1 });
buttonItem1 = new ButtonItem();
buttonItem1.Text = dt_role.Rows[i]["c_FunctionName"].ToString();
buttonItem1.Tag = dt_role.Rows[i]["c_FrmName"].ToString();
buttonItem1.Click += new System.EventHandler(Bar_ItemClicked);
groupBox1.SubItems.AddRange(new ButtonItem[] { buttonItem1 });
groupBox2 = groupBox1;
}
else if (strMenu == dt_role.Rows[i]["c_MenuGroupName"].ToString())
{
buttonItem1 = new ButtonItem();
buttonItem1.Text = dt_role.Rows[i]["c_FunctionName"].ToString();
buttonItem1.Tag = dt_role.Rows[i]["c_FrmName"].ToString();
buttonItem1.Click += new System.EventHandler(Bar_ItemClicked);
groupBox2.SubItems.AddRange(new ButtonItem[] { buttonItem1 });
}
}
}
#endregion
#region 創(chuàng)建子模塊的當前事件
private void Bar_ItemClicked(object sender, EventArgs e)
{
//傳入object類型,判斷哪個子模塊觸發(fā)了當前事件。
ButtonItem ccim = (ButtonItem)sender;
if (ccim.Tag.ToString().Trim() != "")
{
showFunctionFrm(ccim.Tag.ToString().Trim());//傳入WinForm名稱
}
}
#endregion感謝Allen
文章標題:利用explorerBar實現(xiàn)動態(tài)的菜單欄,并創(chuàng)建觸發(fā)事件
轉(zhuǎn)載來于:http://chinadenli.net/article36/gecpsg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計公司、建站公司、微信小程序、品牌網(wǎng)站制作、品牌網(wǎng)站建設(shè)、網(wǎng)站營銷
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)