BringToFront и различные насосы сообщений

Я прыгну прямо в вопрос. По сути, я создал программу, которая требует нескольких сообщений сообщений. Однако, когда форма находится в фокусе, а форма, находящаяся в другом обработчике сообщений, вызывает BringToFront, она не будет работать, потому что она находится в другом обработчике сообщений. Есть ли способ это исправить?

Черт, я не могу поверить, что я забыл добавить это... Извини, ладно! Язык: VB.NET Пример кода:

Public Class Form1
    Private Shared Test As New Form2

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Test.Invoke(Sub() Test.BringToFront())
    End Sub

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        Dim T As New Threading.Thread(Sub()

                                          Application.Run(Test)
                                      End Sub)
        T.Start()
    End Sub
End Class

Я использую Invoke(), потому что форма была создана в другом потоке.

Сначала я нажимаю Button2, затем снова нажимаю Form1 и пытаюсь вывести Form2 на передний план с помощью Button1.

1 ответ

Возможно, вы захотите использовать AttachThreadInput, если вы используете Windows в разных потоках.

Другие вопросы по тегам