现有一个listview列表框,当我单击其中的一条记录时,必须保证当我单击其它记录时,我刚开始单击的记录必须高亮显示,这样我就可以批量点选多条不连续的记录问题是我现在必须借助Ctrl才能实现点选多条不连续的记录,我想抛弃Ctrl实现点选多条不连续的记录,我该如何实现?谢谢

解决方案 »

  1.   

    如果一定要用listview,要不我不知道要不要用到麻烦的方法了
    不过建议去使用listbox
    将其multiselect属性设置为1 - simple 即可
      

  2.   

    这个以5.0版本作为例子,6.0的请做适当修改,加一个按扭用来释放CONTROL键
    有个缺点就是焦点不能离开窗体,否则按下的按键都是Ctrl+?类型,除非按下按扭释放CONTROL键,关于解决方法,可以用子类来检验窗体的焦点是否失去Private Declare Sub keybd_event Lib "user32.dll" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
    Const KEYEVENTF_EXTENDEDKEY = &H1
    Const KEYEVENTF_KEYUP = &H2
    Const VK_CONTROL = &H11Private Sub Command1_Click()
    keybd_event VK_CONTROL, 0, KEYEVENTF_KEYUP, 0   ' release VK_CONTROL
    End SubPrivate Sub Form_Load()
    ListView1.MultiSelect = True
    ListView1.ListItems.Add , , "test1"
    ListView1.ListItems.Add , , "test2"
    ListView1.ListItems.Add , , "test3"
    ListView1.ListItems.Add , , "test4"
    End SubPrivate Sub ListView1_ItemClick(ByVal Item As ComctlLib.ListItem)
    keybd_event VK_CONTROL, 0, 0, 0   ' press VK_CONTROL
    End Sub