根據(jù)數(shù)據(jù)庫表動態(tài)添加菜單及打開窗體
1.引用TabMid.dll 及Janus系列DLL
2.在主界面上拖入Janus.Windows.ButtonBar和System.Windows.Forms.MenuStrip,及
System.Windows.Forms.TabControl控件并布局
3.窗體加載中,先對TabMid.TabMidForm或TabMid.BarMidForm的屬性ApplicationNameSpace賦值,應(yīng)
用程序的命名空間,示例:
4.窗體加載中,查詢菜單表tbMemu,返回DataTable,并調(diào)用CreatMemu創(chuàng)建菜單,設(shè)置單擊事件委托
方法,創(chuàng)建菜單代碼調(diào)用示例和綁定委托方法示例:
bf.CreatMemu(buttonBar1, dt);
tb.MemuClickFunction = MemuClickT;
bf.MemuClickFunction = BarMemuClickT;
5.ButtonBar圖標(biāo)說明:在主界面上拖入System.Windows.Forms.ImageList并添加圖標(biāo)項(xiàng),在數(shù)據(jù)庫
表tbMemu里的字段flngICO設(shè)置相應(yīng)的Index(必須設(shè)置)
6.在委托方法中調(diào)用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控件的雙擊事件中加入關(guān)閉TAB的代碼,示例:
{
//關(guān)閉窗體
int i = tct.SelectedIndex;
tct.TabPages.RemoveAt(i);
}
8.關(guān)于權(quán)限控制菜單,可以根據(jù)權(quán)限表和菜單表創(chuàng)建一個視圖,只要視圖中包含tbMemu表中的所有列
即可
9.添加新的窗體后,將窗體的命名空間修改為一層,如:MidTest。再在數(shù)據(jù)庫表tbMemu添加一條新
記錄:
fstrCode 窗體的類名
fstrName 菜單的TEXT
flngFatherID 上級菜單的flngID
flngICO ButtonBar圖標(biāo),看第5步驟
原理:通過數(shù)據(jù)庫表的結(jié)構(gòu)和數(shù)據(jù)使用遞歸方式創(chuàng)建菜單的項(xiàng),再根據(jù)菜單項(xiàng)使用System.Activator.CreateInstance的方式創(chuàng)建窗體并顯示
浙公網(wǎng)安備 33010602011771號