>我有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
不过,这不是推荐的方法!