Проверка DropDownMenuItem должна снять отметку с других DropDownMenuItems.

Я создаю DropDownItems ToolStripMenuItem во время выполнения.

    Me.mnuExtrasSecondaryLCID.DropDownItems.Clear()

    Dim iCount As Integer = -1

    For Each nLang As clsLanguage In g_LCIDs
        If nLang.IsLeader Then

            iCount += 1

            Dim n As New ToolStripMenuItem
            n.Name = "mnuSecondaryLCID" & iCount.ToString()
            n.Text = nLang.Title
            n.Tag = nLang.LCID
            n.Available = True
            n.CheckOnClick = True

            Me.mnuExtrasSecondaryLCID.DropDownItems.Add(n)

            AddHandler n.Click, AddressOf Me.SecondaryLCIDClick

        End If
    Next

Это прекрасно работает.

Когда я затем проверяю один из DropDownItems во время выполнения, любые другие DropDownItems в том же «списке» остаются проверенными. Вместо этого я хотел бы, чтобы был проверен только один (= последний щелкнутый).

Есть ли свойство, которое позволило бы мне сделать это автоматически, или мне нужно закодировать это, сняв все остальные DropDropItems вручную?


person tmighty    schedule 05.01.2018    source источник
comment
Кодировать нужно вручную.   -  person Reza Aghaei    schedule 06.01.2018


Ответы (1)


Кодировать нужно вручную. При нажатии на подменю снимите все остальные элементы того же уровня:

For index = 1 To 5
    Dim subMenu = New ToolStripMenuItem(index.ToString())
    subMenu.CheckOnClick= True
    AddHandler subMenu.Click, Sub(obj, arg)
        Dim item = DirectCast(obj, ToolStripMenuItem)
        For Each sibling In item.Owner.Items.OfType(Of ToolStripMenuItem).Except({obj})
           sibling.Checked = False
        Next sibling
    End Sub
    Menu1ToolStripMenuItem.DropDownItems.Add(subMenu)
Next
person Reza Aghaei    schedule 05.01.2018