根据数据库表动态添加菜单及打开窗体
1.引用TabMid.dll 及Janus系列DLL
2.在主界面上拖入Janus.Windows.ButtonBar和System.Windows.Forms.MenuStrip,及
System.Windows.Forms.TabControl控件并布局
3.窗体加载中,先对TabMid.TabMidForm或TabMid.BarMidForm的属性ApplicationNameSpace赋值,应
用程序的命名空间,示例:
4.窗体加载中,查询菜单表tbMemu,返回DataTable,并调用CreatMemu创建菜单,设置单击事件委托
方法,创建菜单代码调用示例和绑定委托方法示例:
bf.CreatMemu(buttonBar1, dt);
tb.MemuClickFunction = MemuClickT;
bf.MemuClickFunction = BarMemuClickT;
5.ButtonBar图标说明:在主界面上拖入System.Windows.Forms.ImageList并添加图标项,在数据库
表tbMemu里的字段flngICO设置相应的Index(必须设置)
6.在委托方法中调用TabMidFormShow或BarMidFormShow方法打开窗体,单击委托方法示例:
{
//打开窗体
ToolStripMenuItem tab = (ToolStripMenuItem)sender;
tb.TabMidFormShow(tct, tab.Tag.ToString(), tab.Text);
}
private void BarMemuClickT(object sender,Janus.Windows.ButtonBar.ItemEventArgs
e)
{
//打开窗体
Janus.Windows.ButtonBar.ButtonBarItem itm =
(Janus.Windows.ButtonBar.ButtonBarItem)sender;
bf.BarMidFormShow(tct, itm.Tag.ToString(), itm.Text);
}
7.最后在TabControl控件的双击事件中加入关闭TAB的代码,示例:
{
//关闭窗体
int i = tct.SelectedIndex;
tct.TabPages.RemoveAt(i);
}
8.关于权限控制菜单,可以根据权限表和菜单表创建一个视图,只要视图中包含tbMemu表中的所有列
即可
9.添加新的窗体后,将窗体的命名空间修改为一层,如:MidTest。再在数据库表tbMemu添加一条新
记录:
fstrCode 窗体的类名
fstrName 菜单的TEXT
flngFatherID 上级菜单的flngID
flngICO ButtonBar图标,看第5步骤
原理:通过数据库表的结构和数据使用递归方式创建菜单的项,再根据菜单项使用System.Activator.CreateInstance的方式创建窗体并显示