ContextMenuStrip не выделяет элементы в соответствии с движением мыши - PullRequest
1 голос
/ 23 июня 2010

У меня есть ContextMenuStrip, который я показываю программно в ответ на нажатие кнопки.Все работает, как и ожидалось, за исключением того, что элементы в меню не реагируют на наложение.Независимо от того, нажата ли кнопка мыши вверх или вниз, наведение курсора на меню не имеет видимого эффекта, а при отпускании кнопки мыши элемент не выбирается, как ожидается.Выполнение полного щелчка по элементу все же активирует элемент, однако.

Вот мой код для показа ContextMenuStrip:

Protected Overrides Sub OnMouseDown(ByVal e As System.Windows.Forms.MouseEventArgs)
  MyBase.OnMouseDown(e)
  If Enabled Then
    m_MouseDown = True
    If m_State > ButtonState.MousePressed Then
      m_State = ButtonState.MousePressed
    End If
    Invalidate()
    If DropDown IsNot Nothing AndAlso DropDown.Items.Count > 0 Then
      If ShowMenu Then
        ShowMenu = False
      ElseIf arrowRect.Contains(PointToClient(MousePosition)) Then
        ShowMenu = True
        m_MouseHeldWhileOpened = True
        DropDown.Capture = True
      End If
    End If
  End If
End Sub

Protected Property ShowMenu() As Boolean
  Get
    Return m_showMenu
  End Get
  Set(ByVal value As Boolean)
    If value <> m_showMenu Then
      m_ShowMenu = value
      If m_ShowMenu Then
        m_DropDown.Show(Me, GetDropDownSpawnPoint, DropDownDirection)
        m_State = ButtonState.MenuUp
        If m_DropDown.ClientRectangle.Contains(PointToScreen(MousePosition)) Then
          m_DropDown.Capture = True
        End If
      Else
        m_DropDown.Close()
        ElevateState()
      End If
    End If
  End Set
End Property

Я пробовал несколько различных идей, чтобы получить менючтобы ответить правильно, некоторые из которых все еще очевидны в коде здесь.Если потребуется какая-либо помощь, она будет очень признательна - похоже, никто в Google не сталкивался с этой проблемой.

Заранее благодарю за любую помощь, которую вы можете предложить.

...