【问题标题】:BringToFront and different message pumpsBringToFront 和不同的消息泵
【发布时间】:2015-06-16 17:08:13
【问题描述】:

我会直接进入这个问题。 基本上我已经建立了一个需要多个消息泵的程序。但是,当一个表单处于焦点位置并且位于不同消息泵上的表单调用 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 并尝试使用 Button1 将 Form2 置于最前面。

【问题讨论】:

  • 欢迎来到 SE。您可能希望在帖子中添加详细信息(使用 Edit):哪种语言、演示问题的代码示例...请参阅 How to Ask 作为指导。

标签: multithreading message bringtofront


【解决方案1】:

如果您在不同的线程上运行窗口,您可能需要使用AttachThreadInput

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-11
    • 1970-01-01
    • 2014-02-08
    • 2015-01-25
    • 1970-01-01
    • 2018-03-29
    • 2010-12-07
    • 2016-03-29
    相关资源
    最近更新 更多