代码部分完成后 Treeview 代码被截断

Treeview code cuts after partial completion of code

我有以下代码适用于一个有 x 个子节点的父树节点,但我也想创建另一个父节点,但这次用 dwg 文件名填充它......出于某种原因,它在有只考虑 xls 扩展 我还想为其他类型的扩展添加一个带有子名称的父项。按照正确的工作代码,我添加了不正确的工作代码?

工作代码:

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

    Dim di As New IO.DirectoryInfo("c:\la")
    Dim diar1 As IO.FileInfo() = di.GetFiles()
    Dim dra As IO.FileInfo

    For Each dra In diar1

        'Dim sr As StreamReader = New StreamReader(dra.FullName)
        If System.IO.Path.GetExtension(dra.Name).ToLower() = ".xls" Then
            If TreeView1.Nodes.Count = 0 Then TreeView1.Nodes.Add("Offerts")
            TreeView1.Nodes(0).Nodes.Add(dra.Name)
        End If
    Next

End Sub

现在错误编程的扩展代码:

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

    Dim di As New IO.DirectoryInfo("c:\la")
    Dim diar1 As IO.FileInfo() = di.GetFiles()
    Dim dra As IO.FileInfo

    For Each dra In diar1

        'Dim sr As StreamReader = New StreamReader(dra.FullName)
        If System.IO.Path.GetExtension(dra.Name).ToLower() = ".xls" Then
            If TreeView1.Nodes.Count = 0 Then TreeView1.Nodes.Add("Offerts")
            TreeView1.Nodes(0).Nodes.Add(dra.Name)
        End If
        If System.IO.Path.GetExtension(dra.Name).ToLower() = ".dwg " Then
            If TreeView1.Nodes.Count = 3 Then TreeView1.Nodes.Add("Technical data")
            TreeView1.Nodes(1).Nodes.Add(dra.Name)
        End If
    Next

End Sub

当它到达这个 If 语句时:

If TreeView1.Nodes.Count = 0 Then TreeView1.Nodes.Add("Technical data")

它不添加 "Technical data" 节点,因为 TreeView1.Nodes.Count 不为零(它是一个),因为它已经在 Offerts 下创建了 "Offerts" 节点和一个或多个节点.

做对一半(做"really"对可能不好进入这里),需要在创建根节点的时候加一个key,这样就可以使用查找函数以查看它是否已经创建,并将文件名放在正确的节点下。因此,您不只是 TreeView1.Nodes.Add("Offerts"),而是将密钥添加为第二个参数:TreeView1.Nodes.Add("Offerts", "Offerts")。然后你可以使用 TreeView 的 Find 功能来枚举该节点以检查它是否存在,添加子节点,删除它等。

Dim di As New IO.DirectoryInfo("c:\la")
Dim diar1 As IO.FileInfo() = di.GetFiles()
Dim dra As IO.FileInfo

For Each dra In diar1

     If System.IO.Path.GetExtension(dra.Name).ToLower() = ".xls" Then
        If TreeView1.Nodes.Find("Offerts", False).Length = 0 Then TreeView1.Nodes.Add("Offerts", "Offerts")
            TreeView1.Nodes.Find("Offerts", False)(0).Nodes.Add(dra.Name)
     End If

    If System.IO.Path.GetExtension(dra.Name).ToLower() = ".dwg" Then
        If TreeView1.Nodes.Find("Technical data", False).Length = 0 Then TreeView1.Nodes.Add("Technical data", "Technical data")
            TreeView1.Nodes.Find("Technical Data", False)(0).Nodes.Add(dra.Name)
    End If
Next