Dim a() As String
創(chuàng)新互聯(lián)公司主營(yíng)泗陽網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,成都App制作,泗陽h5微信小程序開發(fā)搭建,泗陽網(wǎng)站營(yíng)銷推廣歡迎泗陽等地區(qū)企業(yè)咨詢
For Each Node1 As TreeNode In TreeView1.Nodes
If Node1.Text = "SiteStructure" Then '如果根節(jié)點(diǎn)=SiteStructure 則Node1.Name改為Node1.Text
Dim cp As TreeNode = TreeView1.Nodes(0) '根節(jié)點(diǎn)
'先要給a賦值,舉個(gè)例子吧,你自己根據(jù)情況變通一下
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
就是讓你處于這個(gè)線程里時(shí),委托另一個(gè)線程去執(zhí)行一些動(dòng)作
我簡(jiǎn)單舉一個(gè)寫richtextbox的例子:
////////////////////////////////////////////
'創(chuàng)建一個(gè)名為 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
/////////////////////
這樣,你在多線程應(yīng)用時(shí),在其他線程里用txtW(str)來寫richtextbox,就不會(huì)產(chǎn)生錯(cuò)誤了。不然,直接垮線程寫richtextbox,可能會(huì)出現(xiàn)和UI線程的沖突。
最簡(jiǎn)單的方法是
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="這是一個(gè)示例" End Sub)