重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
Dim a() As String
创新互联公司主营泗阳网站建设的网络公司,主营网站建设方案,成都App制作,泗阳h5微信小程序开发搭建,泗阳网站营销推广欢迎泗阳等地区企业咨询
For Each Node1 As TreeNode In TreeView1.Nodes
If Node1.Text = "SiteStructure" Then '如果根节点=SiteStructure 则Node1.Name改为Node1.Text
Dim cp As TreeNode = TreeView1.Nodes(0) '根节点
'先要给a赋值,举个例子吧,你自己根据情况变通一下
ReDim a(cp.Nodes.Count)
For i As Integer = 0 To a.Length - 1
a(i) = TreeView1.Nodes(i).Text
Next
If a.Length = 1 Then
cp.Nodes("root").Nodes.Add(a(0))
Application.DoEvents()
Else
For k1 As Integer = 0 To a.Length - 1
Dim tc As New TreeNode(a(k1))
cp.Nodes.Add(tc)
Application.DoEvents()
cp = tc
Next
End If
End If
Next
委托,Delegate
就是让你处于这个线程里时,委托另一个线程去执行一些动作
我简单举一个写richtextbox的例子:
////////////////////////////////////////////
'创建一个名为 MySubDelegate 的委托。
Delegate Sub MySubDelegate(ByVal txt As String)
'写信息到富文本主窗口
Private Sub txtW(ByVal txt As String)
Dim msgd As New MySubDelegate(AddressOf Me.txtW1)
Dim arg(0) As Object
arg(0) = txt
Me.Invoke(msgd, arg)
End Sub
'委托指向
Private Sub txtW1(ByVal txt As String)
Me.RichTextBox1.AppendText(txt)
End Sub
/////////////////////
这样,你在多线程应用时,在其他线程里用txtW(str)来写richtextbox,就不会产生错误了。不然,直接垮线程写richtextbox,可能会出现和UI线程的冲突。
最简单的方法是
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Control.CheckForIllegalCrossThreadCalls = False'加入这句代码就可以在别的线程访问窗体控件了
End Sub
建立委托。 Me.Invoke——同步委托 或者 Me.BeginInvoke——异步委托 例:Me.Invoke(Sub Textbox.Text="这是一个示例" End Sub)