Первый щелчок мыши, зарегистрированный в родительской форме, когда новая форма запускается через событие Tabstrip_Click - PullRequest
1 голос
/ 05 ноября 2010

У меня есть следующий код:

Private Sub Tabstrip1_Click()
   Form2.Show vbModal, Me
end sub

Form2 имеет только кнопку Закрыть. Первый щелчок мышью на Form2 не имеет видимого эффекта, если form2 не лежит над формой вызова, затем возникает ошибка, что модальная форма не может быть показана дважды! Так что происходит, что первый щелчок мыши зарегистрирован в родительской форме. Я попробовал все виды обходных путей (в основном, пройдя через Tabstrip1_GotFocus), но я не мог заставить его работать, не делая некоторые очень запутанные вещи.

Есть ли простое решение?

Ответы [ 2 ]

4 голосов
/ 06 ноября 2010

Используйте этот код для исправления проблем с захватом мыши в вашем конкретном случае.

Private Declare Function ReleaseCapture Lib "user32" () As Long

Private Sub TabStrip1_Click()
    Call ReleaseCapture
    Form2.Show vbModal, Me
End Sub
0 голосов
/ 09 ноября 2015

Проблема описана здесь: https://support.microsoft.com/en-us/kb/262441.

Как там сказано, TabStrip (предположительно, только версия, включенная в Mscomctl.ocx SP3) не освобождает захват мыши, поэтому перед отображением модальной формы необходимо вызвать ReleaseCapture.




в сторону:

Я только что отредактировал предыдущий правильный ответ, но в редактировании было отказано.
«Вводит внешнюю зависимость» ??? В моем опыте авторитетные ссылки не так уж и плохи, я думаю, что ссылка будет кому-то полезна.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...