我编辑的程序中将地域信息用“字母”+“数字”表示,全球地域为a,洲为b,国家为c,省为d,市县为e,数字为地域的编号。如湖南是省,如果它的地域编号为5,则它在TreeView控件中对应的关键字为d5。
'AreaLevel表示限定选择地域的级别
'0-表示无限制
'1-表示选择洲
'2-表示选择国家
'3-表示选择省
'4-表示选择市/县
'5-表示可以选择国家、省、市/县
Private Sub TreeView1_DblClick()
  Dim TmpStr As String
  
  If AreaLevel > 0 And AreaLevel < 5 And AreaLevel <> MyArea.AreaType Then
    Select Case AreaLevel
      Case 1
        TmpStr = "洲"
      Case 2
        TmpStr = "国家"
      Case 3
        TmpStr = "省"
      Case 4
        TmpStr = "市/县"
    End Select
    
    MsgBox "请选择 " + TmpStr
    Exit Sub
  Else
    If AreaLevel = 5 Then '选择国家、省、市/县
      If MyArea.AreaType < 2 Or MyArea.AreaType > 4 Then
        MsgBox "请选择 国家、省、市或县"
        Exit Sub
      End If
    End If
    
    If AreaLevel = 6 Then '选择省、市/县
      If MyArea.AreaType < 3 Or MyArea.AreaType > 4 Then
        MsgBox "请选择 省、市或县"
        Exit Sub
      End If
    End If
  End If
  
  CurArea.AreaId = MyArea.AreaId
  CurArea.AreaName = MyArea.AreaName
  CurArea.AreaType = MyArea.AreaType
  
  ClickOK = True
  Unload Me
End Sub
但我在模块中自定义了过程Add_AreaToTree()
代码:
Public Sub Add_AreaToTree(TreeView1 As TreeView)
  Dim Id As Long
  Dim TmpNode As Node
  Dim CurKey, UpperKey As String
  '读取地域数据
  MyArea.Load_Area
  i = 0
  Do While Arr_AreaName(i) <> ""
    '生成地域对应的键,格式为“字母”+“数字”
    '字母为:全球地域为a,洲为b,国家为c,省为d,等等
    '数字为:地域的编号
    CurKey = Chr(Asc("a") + Arr_AreaType(i))
    CurKey = CurKey + Trim(Str(Arr_AreaId(i)))
    '找到上一级节点
    UpperKey = ""
    If Arr_AreaUpper(i) = 0 Then
      UpperKey = "a0"
    Else
      j = 0
      Do While Arr_AreaName(j) <> ""
        If Arr_AreaId(j) = Arr_AreaUpper(i) Then
          UpperKey = Chr(Asc("a") + Arr_AreaType(j))
          UpperKey = UpperKey + Trim(Str(Arr_AreaId(j)))
        End If
        
        j = j + 1
      Loop
    End If
    
    '如果找到上一级地域,则将当地域添加到TreeView的相应位置
    If UpperKey <> "" Then
      If MyArea.HaveSon(Arr_AreaId(i)) = True Then
        Set TmpNode = TreeView1.Nodes.Add(UpperKey, _
              tvwChild, CurKey, Arr_AreaName(i), 1, 3)
          
        TmpNode.ExpandedImage = 2
      Else
        Set TmpNode = TreeView1.Nodes.Add(UpperKey, _
              tvwChild, CurKey, Arr_AreaName(i), 4, 5)
      End If
      
      If FocusAreaName <> "" And Arr_AreaName(i) = FocusAreaName Then
        TmpNode.Selected = True
        FocusKey = CurKey
      End If
      If FocusAreaId > 0 And Arr_AreaId(i) = FocusAreaId Then
        TmpNode.Selected = True
        FocusKey = CurKey
      End If
      If FocusKey <> "" And CurKey = FocusKey Then
        TmpNode.Selected = True
      End If
    End If
    
    i = i + 1
  Loop
End Sub
可程序运行时我双击TreeView时,提示“请选择省、市或县”。
如果谁看了有觉得缺少代码提供,我这边可提供,谢谢!