万方数据电子出版社出版的《Visual Basic 编程资源大全》上有这问题的答案。

解决方案 »

  1.   

    Selected 属性(ActiveX 控件)
          返回或设置确定一个对象是否被选中的值。对于 ListItem 对象,Selected 属性不设置 SelectedItem 属性,这样就不会使对象被选中。它仅返回一值,表明是否已用其它方法选中了 ListItem 对象。语法object.Selected [ = boolean]Selected 属性语法包含下面部分:部分 描述 
    object 对象表达式,其值是“应用于”列表中的一个对象。 
    boolean 布尔表达式,指明对象是否已被选中。 
    说明用 Selected 属性编程选择指定的 Node 或 Tab 对象。一旦用此法选定了对象,就可对此对象执行各种操作,如设置各种属性及调用各种方法。为选择指定的 Node 对象,必须通过它的 Index 属性或 Key 属性的值去引用它。下面的例子是在 TreeView 控件中选择指定的 Node 对象:Private Sub Command1_Click()
       TreeView1.Nodes(3).Selected = True '选择对象。
       '用 SelectedItem 属性得到对该对象的引用。
       TreeView1.SelectedItem.Text = "Changed Text"
    End Sub在 ListView 控件中,SelectedItem 属性总是引用第一个选中的项,因此,如多个项被选中,必须遍历所有选中的项,以校验每个项的 Selected 属性。注意 不用 Select 属性去编程选择 ListItem 对象,而用带有 SelectedItem 属性的 Set 语句,如:Set ListView1.SelectedItem = ListView1.ListItems(1)
      

  2.   

    是不是说,对于被鼠标选中可以在treeview的click中历遍所有node对象来判断?
    那对于键盘选中也就要在treeview的keypress中来判断吗?这样做好麻烦的啊!
    顺便问一下,上下左右箭头的ASCII码是多少?
      

  3.   

    上下左右键并不能触发keypress啊,怎么知道选中了哪一个node呢?
      

  4.   

    同意楼上的
    上下左右对应的ASCII码分别是:38,40,37,39
      

  5.   

    其实使用treeview的nodeclick事件就可以处理鼠标和键盘的操作。
    Private Sub TreeView1_NodeClick(ByVal node As MSComctlLib.node)
       curNodeIndex = TreeView1.SelectedItem.Index
    end sub
      

  6.   

    wa fatbird
    kiss fatbird