問題:TreeView1.Nodes.Count 僅回傳 1,但視覺上明顯有許多節點。原因在於 Nodes 集合僅包含根節點(第一層),子節點屬於各父節點的 Nodes 屬性,不在頂層集合中。
Private Sub TraverseAndUpdate(node As TreeNode)
' 處理當前節點
Dim k1 As String = node.Name
Dim TF As String = If(node.Checked, "1", "0")
Dim sql = "UPDATE PrivilegeUser SET puTF = @TF WHERE puRID = @RID AND puPriID = @PriID"
Using conn As New SqlConnection(connStr), cmd As New SqlCommand(sql, conn)
cmd.Parameters.AddWithValue("@TF", TF)
cmd.Parameters.AddWithValue("@RID", TextBox1.Text)
cmd.Parameters.AddWithValue("@PriID", k1)
conn.Open()
cmd.ExecuteNonQuery()
End Using
' 遞迴處理子節點
For Each child As TreeNode In node.Nodes
TraverseAndUpdate(child)
Next
End Sub
' 呼叫入口
Private Sub Button7_Click(...)
For Each rootNode As TreeNode In TreeView1.Nodes
TraverseAndUpdate(rootNode)
Next
End Sub
以為TreeView.Nodes包含所有節點 → 實際僅含根節點。需遞迴或使用TreeView.GetAllNodes()(自行實作)獲取扁平化列表。