LzmTW.vb
上传用户:wj57717022
上传日期:2014-12-16
资源大小:4093k
文件大小:4k
源码类别:

医药行业

开发平台:

Visual Basic

  1. Imports System.Windows.Forms
  2. Imports System.Reflection
  3. ''' -----------------------------------------------------------------------------
  4. ''' Project     : CommonTest
  5. ''' Class     : LzmTW.Common.MenuItemClass
  6. ''' 
  7. ''' -----------------------------------------------------------------------------
  8. ''' <summary>
  9. ''' 菜单操作
  10. ''' </summary>
  11. ''' <remarks>
  12. ''' </remarks>
  13. ''' <history>
  14. '''     [lzmtw]    2005-10-21    Created
  15. ''' </history>
  16. ''' -----------------------------------------------------------------------------
  17. Public Class MenuItemClass
  18.     Private Const FindBinding As BindingFlags = BindingFlags.Instance Or BindingFlags.NonPublic Or BindingFlags.Public
  19.     Private Shared tmpHashtable As New Hashtable
  20.     Private Shared tmpForm As Form
  21.     ''' -----------------------------------------------------------------------------
  22.     ''' <summary>
  23.     ''' 返回主菜单所有菜单项的名称和标题
  24.     ''' </summary>
  25.     ''' <param name="FormIstance">窗体实例</param>
  26.     ''' <param name="MainMenu">主菜单</param>
  27.     ''' <returns>名称和标题列表</returns>
  28.     ''' <remarks>
  29.     ''' 对应于哈希表的键和值
  30.     ''' </remarks>
  31.     ''' <history>
  32.     '''     [lzmtw]    2005-10-21    Created
  33.     ''' </history>
  34.     ''' -----------------------------------------------------------------------------
  35.     Public Shared Function GetMenuItemsNameAndText(ByVal FormIstance As Form, ByVal MainMenu As MainMenu) As Hashtable
  36.         tmpForm = FormIstance
  37.         tmpHashtable.Clear()
  38.         For Each o As MenuItem In MainMenu.MenuItems
  39.             GetMenuItemsNameAndText(o)
  40.         Next
  41.         Return tmpHashtable
  42.     End Function
  43.     Private Shared Sub GetMenuItemsNameAndText(ByVal oMenuItem As MenuItem)
  44.         tmpHashtable.Add(GetMenuItemName(tmpForm, oMenuItem), oMenuItem.Text)
  45.         If oMenuItem.IsParent Then
  46.             For Each m As MenuItem In oMenuItem.MenuItems
  47.                 GetMenuItemsNameAndText(m)
  48.             Next
  49.         End If
  50.     End Sub
  51.     ''' -----------------------------------------------------------------------------
  52.     ''' <summary>
  53.     ''' 依据菜单名称返回菜单对象
  54.     ''' </summary>
  55.     ''' <param name="FormIstance">窗体实例</param>
  56.     ''' <param name="MenuItemName">菜单名称</param>
  57.     ''' <returns>菜单</returns>
  58.     ''' <remarks>
  59.     ''' </remarks>
  60.     ''' <history>
  61.     '''     [lzmtw]    2005-10-21    Created
  62.     ''' </history>
  63.     ''' -----------------------------------------------------------------------------
  64.     Public Shared Function GetMenuItemByName(ByVal FormIstance As Form, ByVal MenuItemName As String) As MenuItem
  65.         Dim MenuItemFieldInfo As FieldInfo
  66.         MenuItemFieldInfo = FormIstance.GetType.GetField("_" & MenuItemName, FindBinding)
  67.         If MenuItemFieldInfo Is Nothing Then
  68.             Return Nothing
  69.         Else
  70.             Return CType(MenuItemFieldInfo.GetValue(FormIstance), MenuItem)
  71.         End If
  72.     End Function
  73.     ''' -----------------------------------------------------------------------------
  74.     ''' <summary>
  75.     ''' 给出菜单对象返回菜单名称
  76.     ''' </summary>
  77.     ''' <param name="FormIstance">窗体实例</param>
  78.     ''' <param name="MenuItem">菜单</param>
  79.     ''' <returns>菜单名称</returns>
  80.     ''' <remarks>
  81.     ''' </remarks>
  82.     ''' <history>
  83.     '''     [lzmtw]    2005-10-21    Created
  84.     ''' </history>
  85.     ''' -----------------------------------------------------------------------------
  86.     Public Shared Function GetMenuItemName(ByVal FormIstance As Form, ByVal MenuItem As MenuItem) As String
  87.         Dim MenuItemFieldInfo As FieldInfo
  88.         For Each MenuItemFieldInfo In FormIstance.GetType.GetFields(FindBinding)
  89.             If MenuItemFieldInfo.GetValue(FormIstance) Is MenuItem Then
  90.                 Return MenuItemFieldInfo.Name.Substring(1)
  91.             End If
  92.         Next
  93.         Return String.Empty
  94.     End Function
  95. End Class