回答第一个,设置一个全局逻辑变量,form第一次被载入的时候设置这个变量为Ture,在以上的语句里加个if,如果为True就不要执行那些已经执行过的东东了!

解决方案 »

  1.   

    第二个问题:Option ExplicitPrivate Declare Function SendMessage Lib "User32" Alias "SendMessageA" ( _
            ByVal hWnd As Long, _
            ByVal wMsg As Long, _
            ByVal wParam As Long, _
            lParam As Long) As LongPrivate Declare Function GetWindowLong Lib "User32" Alias "GetWindowLongA" ( _
            ByVal hWnd As Long, _
            ByVal nIndex As Long) As LongPrivate Declare Function SetWindowLong Lib "User32" Alias "SetWindowLongA" ( _
            ByVal hWnd As Long, _
            ByVal nIndex As Long, _
            ByVal dwNewLong As Long) As LongPrivate Const GWL_STYLE = -16&
    Private Const TVM_SETBKCOLOR = 4381&
    Private Const TVS_HASLINES = 2&Private Sub Form_Load()
        Dim NodeX As Node
        Dim lngStyle As Long
        Dim i As Integer
        
        '添加节点
        TreeView1.Nodes.Add , , "N0", "根节点"
        For i = 1 To 10
            TreeView1.Nodes.Add "N0", tvwChild, "N0." & i, "子节点" & i
        Next i
        TreeView1.Nodes("N0").Expanded = True    '改变TreeView的背景
        Call SendMessage(TreeView1.hWnd, TVM_SETBKCOLOR, 0, ByVal RGB(255, 0, 0))
        lngStyle = GetWindowLong(TreeView1.hWnd, GWL_STYLE)
        Call SetWindowLong(TreeView1.hWnd, GWL_STYLE, lngStyle - TVS_HASLINES)
        Call SetWindowLong(TreeView1.hWnd, GWL_STYLE, lngStyle)    '改变所有节点的背景
        For Each NodeX In TreeView1.Nodes
            NodeX.BackColor = RGB(255, 0, 0)
        Next
    End Sub
      

  2.   

    谢谢~两位!
    还有没有其它的方法呢?还有对于第一个问题:我觉得虽然第二次执行了load form,可是因为窗体已经在内存中,第二次是不是没有真正重读呢?
      

  3.   

    关于第一个问题,MSDN中有说明:除非在加载窗体时不需要显示窗体,否则对于窗体不需要使用 Load 语句。在窗体还未被加载时,对窗体的任何引用(在 Set 或 If...TypeOf 语句以外)会自动加载该窗体。在Menu_Click()事件中,直接Show()出窗体就可以了。
      

  4.   

    sub menu_click()
        with form1
            .show
            .zorder 0
         end with
    end sub
      

  5.   

    同意 junwhj() ,初始化和结束工作VB已经都帮助你作了
      

  6.   

    public function myshow()
         if me.visible = false then 
               me.show
               exit function
         else
               dim frm as new your_form
               frm.myshow
         endif
    end function
    调用次函数即可了
      

  7.   

    第一个问题:
    写在form1里Private Const SWP_NOSIZE = &H1
    Private Const SWP_NOMOVE = &H2
    Private Declare Function SetWindowPos Lib "user32" ( ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long,ByVal cx As Long,ByVal cy As Long, ByVal wFlags As Long) As Long
    Private mbOnTop As Boolean
    Public Property Let OnTop(Setting As Boolean)
    If Setting Then
    SetWindowPos hwnd, -1, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE
    Else
    SetWindowPos hwnd, -2, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE
    End If
    mbOnTop = Setting
    End Property
    sub menu_click()
    form1.OnTop=true
    end sub