C#WinForm利用sideBar动态加载菜单栏,并创建菜单栏事件-创新互联
简要说明:SessionInfo,用于临时保存信息。

SessionInfo.m_FrmMain.showFunctionFrm(ccim.Tag.ToString().Trim());//根据窗体全称,打开窗体。
#region 定义
private DataTable dt_role = new DataTable();
private SQLBase SQL_Base = new SQLBase();
string strMenu = string.Empty;//用于临时保存主模块名称
SideBarPanelItem sideBarPanel1;
ControlContainerItem conCI;
SideBarPanelItem sideBarPanel2 = null;//用于临时保存主模块的控件类型
#endregion
#region 显示函数
private void Menu_Load()
{
dt_role = SQL_Base._GetUserRole(SessionInfo._GroupID);//根据分组,查找登录者的权限
for (int i = 0; i < dt_role.Rows.Count; i++)
{
//if用于判断,如果是相同主模块,则不再重复添加控件。
if (string.IsNullOrEmpty(strMenu) || strMenu != dt_role.Rows[i]["c_MenuGroupName"].ToString())
{
sideBarPanel1 = new SideBarPanelItem();//创建主模块控件
sideBarPanel1.Text = strMenu = dt_role.Rows[i]["c_MenuGroupName"].ToString();//设置控件内容,并临时保存主模块标题
sideBarPanel1.Tag=dt_role.Rows[i]["c_MenuGroupName"].ToString();//设置控件内容
sideBar1.Panels.AddRange(new BaseItem[] { sideBarPanel1 });//添加主模块控件
conCI = new ControlContainerItem();//创建子模块控件
conCI.Text = dt_role.Rows[i]["c_FunctionName"].ToString();//设置控件内容
conCI.Tag = dt_role.Rows[i]["c_FrmName"].ToString();//设置点击时,要打开哪个窗体(保存WinForm全称)。
conCI.Click += new System.EventHandler(Bar_ItemClicked);//添加事件
sideBarPanel1.SubItems.AddRange(new BaseItem[] { conCI });//添加子模块控件
sideBarPanel2 = sideBarPanel1;//用于临时保存主模块的控件类型
}
else if(strMenu == dt_role.Rows[i]["c_MenuGroupName"].ToString())
{
//如果是相同的主模块,则不再New主模块,直接利用临时保存的sideBarPanel2加载子模块。
conCI = new ControlContainerItem();//创建子模块控件
conCI.Text = dt_role.Rows[i]["c_FunctionName"].ToString();//设置控件内容
conCI.Tag = dt_role.Rows[i]["c_FrmName"].ToString();//设置点击时,要打开哪个窗体(保存WinForm全称)。
conCI.Click += new System.EventHandler(Bar_ItemClicked);//添加事件
sideBarPanel2.SubItems.AddRange(new BaseItem[] { conCI });//添加子模块控件
}
}
}
#endregion
#region 创建子模块的当前事件
private void Bar_ItemClicked(object sender, EventArgs e)
{
//传入object类型,判断哪个子模块触发了当前事件。
ControlContainerItem ccim = (ControlContainerItem)sender;
if (ccim.Tag.ToString().Trim() != "")
{
SessionInfo.m_FrmMain.showFunctionFrm(ccim.Tag.ToString().Trim());//传入WinForm名称
}
}
#endregion创新互联www.cdcxhl.cn,专业提供香港、美国云服务器,动态BGP最优骨干路由自动选择,持续稳定高效的网络助力业务部署。公司持有工信部办法的idc、isp许可证, 机房独有T级流量清洗系统配攻击溯源,准确进行流量调度,确保服务器高可用性。佳节活动现已开启,新人活动云服务器买多久送多久。
当前标题:C#WinForm利用sideBar动态加载菜单栏,并创建菜单栏事件-创新互联
文章地址:http://www.jxjierui.cn/article/iesso.html


咨询
建站咨询
