只需使用一个ToolStripControlHost
与一起ToolStripDropDown
,和它的工作就像ComboBox
下拉.您不必担心处理鼠标事件.
我之前用过这个:
Private Sub ShowControl(ByVal fromControl As Control, ByVal whichControl As Control)
'\\ whichControl needs MinimumSize set:'
whichControl.MinimumSize = whichControl.Size
Dim toolDrop As New ToolStripDropDown()
Dim toolHost As New ToolStripControlHost(whichControl)
toolHost.Margin = New Padding(0)
toolDrop.Padding = New Padding(0)
toolDrop.Items.Add(toolHost)
toolDrop.Show(Me, New Point(fromControl.Left, fromControl.Bottom))
End Sub
Run Code Online (Sandbox Code Playgroud)
使用表单上的Button控件进行快速演示:
Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
ShowControl(Button1, New MonthCalendar)
End Sub
Run Code Online (Sandbox Code Playgroud)
为了回答标题中的问题,我认为使用SetCapture和Release Capture的pinvoke调用来处理这种类型的功能.