如何在不同线程中调用的窗体上设置窗口标题



>我有2种形式:Form1和Form2。
在 Form1 中,我通过单击按钮 1 在新线程中打开 Form2。
我想设置 Form2 的标题,但我不知道如何以及它是如何实现的。这是来自 Form1 的代码,Form2 只是一个空的 Form:

Public Class Form1
    Dim TH As New Threading.Thread(AddressOf FormShow)
    Private Shared Sub FormShow()
        Dim FF As New Form2
        FF.Show()
        Do While FF.Visible
            Threading.Thread.Sleep(100)
            Application.DoEvents()
        Loop
    End Sub
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        TH.Start()
    End Sub
    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        'How to change the Form2 title?
        'I need something like : TH.Form2.Text="NewTitle"?
    End Sub
End Class

如果我启动代码并单击按钮1 Form2将打开。但是,当我在 Form2 上按 Button2 时,如何更改 Form1 中的窗口标题?有什么想法吗?谢谢。

从我上面的评论:

正确的方法是将 WORK(而不是表单)移动到 不同的线程。搜索 BackgroundWorker() 控件和 你会得到十亿个例子。

但是,从技术上讲,可以在原始问题中执行所需的操作:

Public Class Form1
Public Shared FF As New Form2
    Dim TH As New Threading.Thread(AddressOf FormShow)
    Private Sub FormShow()
        Application.Run(FF)
    End Sub
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        TH.Start()
    End Sub
    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        If Not IsNothing(FF) AndAlso Not FF.IsDisposed Then
            FF.BeginInvoke(Sub(title)
                               FF.Text = title
                           End Sub, New Object() {"Hello"})
        End If
    End Sub
End Class

不过,这不是推荐的方法!

最新更新