如果是VB.NET
成都創(chuàng)新互聯(lián)是一家專業(yè)提供黎平企業(yè)網(wǎng)站建設(shè),專注與做網(wǎng)站、網(wǎng)站制作、H5頁面制作、小程序制作等業(yè)務(wù)。10年已為黎平眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站制作公司優(yōu)惠進(jìn)行中。
那么可以直接從一個(gè)父窗體類繼承,例如
Dim
NewFrm
as
New
Form1
NewFrm.Show
這樣可以為一個(gè)窗體創(chuàng)建N個(gè)相同的子類,并且通過類的方法覆蓋,可以與父類有所不同
Imports System.Threading
Public Class Form1
Dim t1, t2 As Thread
Dim tt1
Private Delegate Sub voiddelegate(ByVal i As Integer)
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Form2.Show()
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
t1 = New Thread(AddressOf test)
tt1 = 1
t1.Start()
tt1 = 2
t2 = New Thread(AddressOf test)
t2.Start()
' Timer1.Start()
End Sub
Private Sub updateui(ByVal i As Integer)
Form2.Label1.Text = i.ToString
Form2.Label2.Text = i.ToString
End Sub
'把循環(huán)放到線程中運(yùn)行會(huì)好一些,其實(shí)主要事務(wù)是對(duì)窗體控件的操作時(shí)多線程意義不大,因?yàn)樵L問窗體的代碼依然要在窗體線程中運(yùn)行。
Private Sub test()
Dim d As voiddelegate = AddressOf updateui
For i = 0 To 9000
Me.Invoke(d, i)
Next
End Sub
'如果放在計(jì)時(shí)器中運(yùn)行效果好的多
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Static i As Integer = 0
i += 1
If i 9000 Then Timer1.Stop() : i = 0
Form2.Label1.Text = i.ToString
Form2.Label2.Text = i.ToString
End Sub
End Class
'如果在另一線程中用Application.run 打開窗體確實(shí)能行,不過窗體間相互操作不起作用,這個(gè)尚待研究中。
在項(xiàng)目中右鍵點(diǎn)擊添加窗體。在代碼中需要顯示該窗體的地方寫入如下代碼:“form2.show()”form2是你窗體的name屬性……