Vb.net 当我重新打开表单时,treeview消失了

Vb.net 当我重新打开表单时,treeview消失了,vb.net,treeview,Vb.net,Treeview,我想请你帮忙。我已经坚持了两天多了,我已经在网上搜索过了,但不幸的是没有得到答案 我有一个VB2008程序和一个数据库(SQLServer2008)。我有一张包含treeview的表格。显示的项目是从数据库中选择的。当我运行程序并打开表单时,会显示treeview项(起初),但当我关闭表单并尝试再次打开它时,treeview会消失。我不知道为什么它消失了。谁能帮帮我吗。谢谢 下面是我的代码 @形式荷载 Private Sub frmProfile_Load(ByVal sender As Sys

我想请你帮忙。我已经坚持了两天多了,我已经在网上搜索过了,但不幸的是没有得到答案

我有一个VB2008程序和一个数据库(SQLServer2008)。我有一张包含treeview的表格。显示的项目是从数据库中选择的。当我运行程序并打开表单时,会显示treeview项(起初),但当我关闭表单并尝试再次打开它时,treeview会消失。我不知道为什么它消失了。谁能帮帮我吗。谢谢

下面是我的代码

@形式荷载

Private Sub frmProfile_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Call conecDB()
    Call initCMD()

    FillTable()
    CreateTree() 'create the treeview node
    findNode()   'find and checked the selected nodes that was given to the profile

End Sub
"功能,

Private Sub FillTable()
    'tv1.Nodes.Clear()
    dtable.Columns.Add("ID", GetType(Integer))
    dtable.Columns.Add("NAME", GetType(String))
    dtable.Columns.Add("PARENT", GetType(Integer))
    dtable.Columns.Add("LEVEL", GetType(Integer))

    qSQL = "select mod_id,name,parent,level,sort,mnu_name from module where status='A' and parent!=-1"
    With comDB
        .CommandText = qSQL
        rdDB = .ExecuteReader
    End With

    Do While rdDB.Read
        dtable.Rows.Add(rdDB!mod_id, rdDB!name.ToString(), rdDB!parent)
        My.Application.DoEvents()
    Loop

    For i = 0 To dtable.Rows.Count - 1
        Dim ID1 As String = dtable.Rows(i).Item("ID").ToString
        dtable.Rows(i).Item("LEVEL") = FindLevel(ID1, 0)
    Next
    rdDB.Close()
End Sub

 Private Function FindLevel(ByVal ID As String, ByRef Level As Integer) As Integer
    For i = 0 To dtable.Rows.Count - 1
        Dim ID1 As String = dtable.Rows(i).Item("ID").ToString
        Dim Parent1 As String = dtable.Rows(i).Item("PARENT").ToString

        If ID = ID1 Then
            If Parent1 = 0 Then
                Return Level
            Else
                Level += 1
                FindLevel(Parent1, Level)
            End If
        End If
    Next
    Return Level
End Function

Private Sub CreateTree()
    tv1.Nodes.Clear()
    Dim MaxLevel1 As Integer = CInt(dtable.Compute("MAX(LEVEL)", ""))
    Dim i, j As Integer

    For i = 0 To MaxLevel1
        Dim Rows1() As DataRow = dtable.Select("LEVEL = " & i)
        For j = 0 To Rows1.Count - 1
            Dim ID1 As String = Rows1(j).Item("ID").ToString
            Dim Name1 As String = Rows1(j).Item("NAME").ToString
            'Dim mName As String = Rows1(j).Item("mNAME").ToString
            Dim Parent1 As String = Rows1(j).Item("PARENT").ToString

            If Parent1 = 0 Then
                tv1.Nodes.Add(ID1, Name1)
            Else
                Dim TreeNodes1() As TreeNode = tv1.Nodes.Find(Parent1, True)

                If TreeNodes1.Length > 0 Then
                    TreeNodes1(0).Nodes.Add(ID1, Name1)
                End If
            End If
        Next
    Next
End Sub

Private Sub findNode()
    Dim rName As String = String.Empty
    Dim b As Boolean = True

    qSQL = "select access_id,mnu_name from profile_details where prof_id=" & lblPID.Text & ""
    With comDB
        .CommandText = qSQL
        rdDB = .ExecuteReader
    End With
    Do While rdDB.Read
        rName = rdDB!access_id.ToString()
        Try
            Dim arr As TreeNode() = tv1.Nodes.Find(rName, b)
            For i = 0 To arr.Length - 1
                tv1.SelectedNode = arr(i)
                tv1.SelectedNode.Checked = True
            Next
        Catch
            MsgBox(Err)
        End Try
    Loop
    rdDB.Close()
End Sub

你是说TreeView控件消失了,还是说它没有内容/节点?@Mort…它真的消失了。最初打开时,它显示,当我关闭表单并重新打开它时,无法看到TreeView。