1

我有 2 个表格:Form1 和 Form2。
在 Form1 中,我通过单击 Button1 在新线程中打开 Form2。
我想设置 Form2 的标题,但我不知道如何以及是否可能。这是来自 Form1 的代码, Form2 只是一个空表单:

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

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

4

1 回答 1

3

从我上面的评论:

正确的方法是将 WORK(而不是 Form)移动到不同的线程上。搜索 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

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

于 2013-11-07T21:25:15.617 回答