ボタンのクリックに応じてプログラムで表示する 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の他の誰もこの問題を経験していないようです.
あなたが提供できる助けを前もって感謝します。