vb.net共用窗体 用vb的窗体好还是vba的好

vb.net如何让两个窗体并发运行

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

'把循环放到线程中运行会好一些,其实主要事务是对窗体控件的操作时多线程意义不大,因为访问窗体的代码依然要在窗体线程中运行。

Private Sub test()

Dim d As voiddelegate = AddressOf updateui

For i = 0 To 9000

Me.Invoke(d, i)

Next

End Sub

'如果放在计时器中运行效果好的多

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 打开窗体确实能行,不过窗体间相互操作不起作用,这个尚待研究中。

VB.net可以多线程控制同一个窗体及其控件吗

不可以,但是能够在主线程的基础上调用委托(Invoke)。(主线程会被占用)

例子:

Dim thr As Threading.Thread

Public Delegate Sub VoidDelegate()

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

thr = New Threading.Thread(AddressOf Where)

thr.Start()

End Sub

Public Sub Where()

Me.BeginInvoke(New VoidDelegate(AddressOf WhereThr))

End Sub

Public Sub WhereThr()

Me.TextBox.text="0123456789"

End Sub

(Invoke)这种情况下,主线程被占用,所有由主线程执行程序,都将被(wherethr函数执行结束)后执行。

VB.net循环调用同一个窗体的问题

目测是 SetParent() 的锅,你把这句注释了,用 ShowDialog() 应该就能符合你的要求了。

题主是想用系统 API 来模拟类似 MDI 父子窗体的结构吗?


本文名称:vb.net共用窗体 用vb的窗体好还是vba的好
本文路径:http://pwwzsj.com/article/doidscj.html