VB.net 動態新增選單響應單擊事件
以前 VB 6.0 我要調一堆 API 感覺好過癮 呵呵 現在找不到這種感覺了 哈!記得vb 6 的 時候生氣用Win32寫了個Clock 掉了上百個 API 連VB 6 的窗體都沒用, 那個叫過癮 一切都在控制中的感覺真好。看來我還是適合用 MASM Win32 的。哈哈 廢話 到此結束。動態新增選單在 .net 中很容易的。
首先建立一個XML 檔案用來儲存 選單資訊 (本例使用 DataHelper.xml)
<?xml version="1.0" encoding="utf-8" ?>
<DataHelper>
<Menu>
<IsSeparator>0</IsSeparator>
<IsTopMenu>0</IsTopMenu>
<TopMenuItemIndex>2</TopMenuItemIndex>
<SubMenuItemIndex></SubMenuItemIndex>
<MenuID>1</MenuID>
<ParentID>0</ParentID>
<Text>基本資料庫(&B)...</Text>
<Image></Image>
<ToolTipText></ToolTipText>
<Visible>True</Visible>
<Name>DataConvert</Name>
<ShortcutKeys></ShortcutKeys>
</Menu>
<Menu>
<IsSeparator>1</IsSeparator>
<IsTopMenu>0</IsTopMenu>
<TopMenuItemIndex>2</TopMenuItemIndex>
<SubMenuItemIndex></SubMenuItemIndex>
<MenuID>2</MenuID>
<ParentID>0</ParentID>
</Menu>
<Menu>
<IsSeparator>0</IsSeparator>
<IsTopMenu>0</IsTopMenu>
<TopMenuItemIndex>2</TopMenuItemIndex>
<SubMenuItemIndex></SubMenuItemIndex>
<MenuID>2</MenuID>
<ParentID>0</ParentID>
<Text>計生系統(&J)...</Text>
<Image></Image>
<ToolTipText></ToolTipText>
<Visible></Visible>
<Name>DataConvert</Name>
<ShortcutKeys>131140</ShortcutKeys>
</Menu>
<Menu>
<IsSeparator>1</IsSeparator>
<IsTopMenu>0</IsTopMenu>
<TopMenuItemIndex>2</TopMenuItemIndex>
<SubMenuItemIndex></SubMenuItemIndex>
<MenuID>2</MenuID>
<ParentID>0</ParentID>
</Menu>
<Menu>
<IsSeparator>0</IsSeparator>
<IsTopMenu>0</IsTopMenu>
<TopMenuItemIndex>2</TopMenuItemIndex>
<SubMenuItemIndex></SubMenuItemIndex>
<MenuID>3</MenuID>
<ParentID>0</ParentID>
<Text>黨員系統(&D)...</Text>
<Image></Image>
<ToolTipText></ToolTipText>
<Visible></Visible>
<Name>DataConvert</Name>
<ShortcutKeys></ShortcutKeys>
</Menu>
<Menu>
<IsSeparator>1</IsSeparator>
<IsTopMenu>0</IsTopMenu>
<TopMenuItemIndex>2</TopMenuItemIndex>
<SubMenuItemIndex></SubMenuItemIndex>
<MenuID>2</MenuID>
<ParentID>0</ParentID>
</Menu>
<Menu>
<IsSeparator>0</IsSeparator>
<IsTopMenu>0</IsTopMenu>
<TopMenuItemIndex>2</TopMenuItemIndex>
<SubMenuItemIndex></SubMenuItemIndex>
<MenuID>4</MenuID>
<ParentID>0</ParentID>
<Text>民政系統(&M)...</Text>
<Image></Image>
<ToolTipText></ToolTipText>
<Visible></Visible>
<Name>DataConvert</Name>
<ShortcutKeys></ShortcutKeys>
</Menu>
</DataHelper>
好了第一步開始,讀取XML檔案 我們使用 DataSet 來幹這活,不過我是在 DataHerlper.Common 工程來幹這事的。哇 分層阿!
這個是個結構 我用的 看取那個Table
Imports System.Drawing
Imports System.Windows.Forms
Namespace DataHelper.Common
PublicEnum DataHelperConfigTableName
DropDownMenu =0
Plugins =1
End Enum
End Namespace
Imports System.Data
Imports DataHelper.Common.Caching
Imports System.Windows.Forms
Namespace DataHelper.Common
PublicClass SharedClass
PublicSharedFunction GetDataHelperConfig(OptionalByVal TableName As DataHelperConfigTableName = DataHelperConfigTableName.DropDownMenu) As DataTable
Dim strDataHelperConfigFile AsString
Dim ds AsNew DataSet
Dim dt AsNew DataTable
strDataHelperConfigFile = Application.StartupPath &"ConfigDataHelper.xml"'Application.StartupPath
ds = DataCache.GetCache("DataHelperConfig")
If ds IsNothingThen
Dim xmlReader As XmlTextReader =New XmlTextReader(strDataHelperConfigFile)
ds =New DataSet
ds.ReadXml(xmlReader)
dt = ds.Tables(TableName)
DataCache.Insert("DataHelperConfig", ds, DataCache.CreateFileCacheDependency(strDataHelperConfigFile))
Else
dt = ds.Tables(TableName)
EndIf
Return dt
End Function
End Class
End Namespace
我們得到選單資訊了接下來就要動態新增選單了 這又是一個工程(DataHelper.UserInterface) 分層嗎
'**********************************************************************************************************
' Programmer By Shadow (QQ:33512603)
' User Interface MainMenu Class
' The MainMenu class create menu for localappliction
' Corpright(C) 2006 Jiang Jian
'**********************************************************************************************************
' 程式設計:江建
'**********************************************************************************************************
Imports System.IO
Imports System.Windows.Forms
Imports DataHelper.Common
Imports DataHelper.PluginsInterface
Namespace DataHelper.UserInterface
PublicClass MainMenu
Private MenuClick AsNew MainMenuClick
Public Methods
Private Methods