【问题标题】:MenuItem multiple parentMenuItem 多个父项
【发布时间】:2012-05-28 01:06:50
【问题描述】:

我有一个在右键单击数据网格视图时出现的菜单项。用户将鼠标悬停在菜单项上,然后出现其他菜单项的列表,再次重复。给予这样的东西。

---------
|  FOO  |---------
---------|  BAR  |------------
          ---------|  FOOBAR  |
                   ------------

只有在第 3 层处理的事件 (addressof)。话虽如此,我需要从 FOOBAR 中获取 parent.name 和所述父母(祖父母)的 parent.name。

这是我所在的地方:

If currentMouseRow >= 0 AndAlso currentMouseColumn <= 1 Then
            dataGridView_monitorMapping.Rows(currentMouseRow).Selected = True
            mainMenu.MenuItems.Add(New MenuItem("Set Monitor(s) Settings"))
            mainMenu.MenuItems.Add(New MenuItem("Sync Monitor Mapping View", AddressOf triggerSync))
            'list avaliable priorites
            For Each priorityRow As DataRow In priorityTypesDS.Tables(0).Rows
                Dim rowPriortiyName As String = CStr(priorityRow("Priority"))
                Dim subMenu_priorities_item As New MenuItem(rowPriortiyName)
                mainMenu.MenuItems(0).MenuItems.Add(subMenu_priorities_item)
                'list avaliable boards
                For Each boardRow As DataRow In serviceBoardDS.Tables(0).Rows
                    Dim rowBoardName As String = CStr(boardRow("SvcBrd"))
                    Dim subMenu_boards_item As New MenuItem(rowBoardName)
                    subMenu_priorities_item.MenuItems.Add(subMenu_boards_item)
                    'list avaliable types based on board
                    If rowBoardName IsNot Nothing Then
                        Dim availableSvcTypes As DataSet = GetServiceTypes(_objhost, serviceTypes, rowBoardName)
                        For Each svcTypeRow As DataRow In availableSvcTypes.Tables(0).Rows
                            Dim rowSvcTypeName As String = CStr(svcTypeRow(1))
                            Dim subMenu_svcType_item As New MenuItem(rowSvcTypeName, AddressOf triggerSync)
                            subMenu_boards_item.MenuItems.Add(subMenu_svcType_item)
                        Next
                    End If
                Next
            Next
            mainMenu.Show(dataGridView_monitorMapping, New Point(e.X, e.Y))
        End If

还有事件处理程序

Public Sub updateMultiRowSettingChange(ByVal Sender As System.Object, ByVal e As System.EventArgs)
    'TODO | Handle selection from right click menu.
End Sub

【问题讨论】:

    标签: vb.net contextmenu selection menuitem multipleselection


    【解决方案1】:

    这样的东西应该可以得到你想要的东西:

    Public Sub updateMultiRowSettingChange(ByVal Sender As System.Object, ByVal e As System.EventArgs)
        Dim item As MenuItem = CType(sender, MenuItem)
        Dim parent As MenuItem = CType(item.Parent, MenuItem)
        Dim grandparent As Menu = parent.Parent
    End Sub
    

    但是,将菜单项上的标签设置为您需要知道它来自何处的任何信息可能会更简单,然后您可以在将其转换为 MenuItem 类后检查item.Tag

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多