Используя код ниже:
Private Sub ShowDropDown()
Using f As New DropDownForm
f.Visible = True
Do While f.Visible
Application.DoEvents()
// Call to not take up 100% resources
Loop
End Using
End Sub
Если метод ShowDropDown вызывается чем-либо, кроме нажатия кнопки, то первый щелчок мыши в DropDownForm игнорируется.
Таким образом, если он вызывался после щелчка PictureBox или щелчка формы, он игнорируется.
Я могу решить проблему, выполнив следующие действия:
Private Sub ShowDropDown()
Using f As New DropDownForm
f.Visible = True
Dim capture As IntPtr = GetCapture()
If (capture <> IntPtr.Zero) Then
SendMessage(New HandleRef(Nothing, capture), &H1F, IntPtr.Zero, IntPtr.Zero)
ReleaseCapture()
End If
Do While f.Visible
Application.DoEvents()
Loop
End Using
End Sub
Это было предположение, после просмотра метода Form.ShowDialog в отражателе.
У меня вопрос: есть ли управляемый вызов, который я могу сделать для достижения того же результата, и что делает нажатие кнопки, а другие - нет?
ETA: проблема не возникает, если я открываю форму с помощью ключа.