1、请给几个listview关于multiselect属性的应用实例,例如如何将选中的多个listitem进行打印、删除操作。
2、listview的itemcheck事件
3、listview的itemclick事件
4、listview的右键菜单制作

解决方案 »

  1.   

    1,2,3中的问题主要是关于SELECTEDITEM属性的操作问题,这个看一下VB自带的帮助及示例,应该没有什么问题的。
    关于4的问题,如果菜单是静态的话,很容易实现。如果是根据选择中的内容动态显示的话,有些麻烦。关注学习。
      

  2.   

    MultiSelect 属性(ListView、TabStrip控件)
          返回或设置一个值,此值指示用户是否可以选择多个对象或项目。语法object.MultiSelect [= boolean]MultiSelect 属性的语法包含下面部分:部分 描述 
    object 对象表达式,其值是“应用于”列表中的一项。 
    boolean 指定选择类型的值,如“设置值”中所描述。 
    设置值boolean 的设置值为:常数 描述 
    False (缺省)不允许选择多个对象或项目。 
    True 允许多个选择。 
    说明对于 ListView 控件:按下 SHIFT键并单击鼠标,或按下 SHIFT 键和方向键(UP 键、DOWN 键、LEFT 键和 RIGHT 键)之一,可将选择从先前选定的 ListItem延伸到当前的 ListItem。按 CTRL 键并单击鼠标将选定或者撤消选定列表中的一个 ListItem。对于 TabStrip 控件:当 Style 属性被设为 TabButton 时,只能选择Tab对象。
    Ghosted、MultiSelect 属性示例
    本示例将 Biblio.mdb 数据库 Authors 表的内容植入 ListView 控件并允许使用 OptionButton 控件设置 MultiSelect 属性选项。可以只选择任何一个项目,也可按下 SHIFT 键选择多个项目。单击 CommandButton 设置选定项目的 Ghosted 属性为 True。要试用此例,请将一个包含两个 OptionButton 控件的控件数组、一个 ListView 控件、一个 ImageList 控件和一个 CommandButton 控件放置在窗体上,并将代码粘贴到窗体的声明部分。注意 必须使用“工具”菜单的“引用”命令添加 Microsoft DAO 3.0 对象库的引用,否则示例无法运行。运行此例,单击 OptionButton 选择 MultiSelect 选项,单击项目选定它们后,再次单击 CommandButton 将使它们成为幻影。Private Sub Command1_Click()
       Dim x As Object
       Dim i As Integer
       '使选定的项目成为幻影。
    If ListView1.SelectedItem Is Nothing Then Exit Sub
       For i = 1 To ListView1.ListItems.Count
          If ListView1.ListItems(i).Selected = True Then
             ListView1.ListItems(i).Ghosted = True
          End If
       Next i
    End SubPrivate Sub Form_Load()
       '为 ColumnHeader 对象创建对象变量。
       Dim clmX As ColumnHeader
       '添加 ColumnHeaders。列宽度等于控件宽度
       '除以 ColumnHeader 对象的数目。
       Set clmX = ListView1.ColumnHeaders. _
       Add(, , "Company", ListView1.Width / 3)
       Set clmX = ListView1.ColumnHeaders. _
       Add(, , "Address", ListView1.Width / 3)
       Set clmX = ListView1.ColumnHeaders. _
       Add(, , "Phone", ListView1.Width / 3)
       
       '用 MultiSelect 选项标注 OptionButton 控件。
          Option1(0).Caption = "No MultiSelect"
          Option1(1).Caption = "MultiSelect"
          ListView1.MultiSelect = 1 '设置 MultiSelect 为 True   ListView1.BorderStyle = ccFixedSingle '设置 BorderStyle 属性。
       ListView1.View = lvwReport   '设置 View 属性为报表。
       '添加一个图象到 ImageList 控件中。
       Dim imgX As ListImage
       Set imgX = ImageList1.ListImages. _
       Add(, , LoadPicture("icons\mail\mail01a.ico"))
       ListView1.Icons = ImageList1   '为数据访问对象创建对象变量。
       Dim myDb As Database, myRs As Recordset
       '设置数据库为 BIBLIO.MDB 数据库。
       Set myDb = DBEngine.Workspaces(0).OpenDatabase("BIBLIO.MDB")
       '设置 recordset 为 Publishers 表。
       Set myRs = myDb.OpenRecordset("Publishers", dbOpenDynaset)
       
       '创建变量以添加 ListItem 对象。
       Dim itmX As ListItem   '若当前记录不是最后一条记录,则添加 ListItem 对象。
       'ListItem 对象的文本使用 Name 字段。
       'ListItem 对象的 SubItem(1) 使用 Address 字段。
       'ListItem 对象的 SubItem(2) 使用 Phone 字段。   While Not myRs.EOF
          Set itmX = ListView1.ListItems.Add(, , CStr(myRs!Name))
          itmX.Icon = 1  '设置图标为 ImageList 图标。      '若 Address 字段不为空,设置 SubItem 1 为此字段。
          If Not IsNull(myRs!Address) Then
             itmX.SubItems(1) = CStr(myRs!Address)  'Address 字段。
          End If      '若 Phone 字段不为空,则设置 SubItem 2 为此字段。
          If Not IsNull(myRs!Telephone) Then
             itmX.SubItems(2) = myRs!Telephone  'Phone 字段。
          End If      myRs.MoveNext  '移动到下一条记录。
       Wend   ListView1.View = lvwIcon  '显示图标视图。
       Command1.Caption = "Cut"  '设置 CommandButton 的标题。
       '为窗体添加标题。
       Me.Caption = "Select any item(s) and click 'Cut'."
    End SubPrivate Sub Option1_Click(Index as Integer)
       ListView1.MultiSelect = Index
    End Sub
      

  3.   

    Private Sub ListView1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
     if button and vbrightbutton then
       PopupMenu mnuListPopup
     end if
    End Sub
    传给POPUPMENU方法的参数是已经在Menu Editor中定义了的菜单名。它是一个可以从通常的菜单结构进入的子菜单,也可以是仅工作于弹出方式的子菜单。在后一种情况下(也就是你第4项)应该在Menu Editor将它创建为一个顶级的菜单,并将其Visible 属性设为False.如果程序包括很多弹出式菜单,可能会发现加一个不可见的顶级入口并将所有的弹出式菜单加在它的下面会比较方便. PopupMenu方法的完整语法:
    PopupMenu Menu,[Flags],[x],[y],[DefaultMenu]
    缺省情况下,弹出式菜单靠左显示在光标上。
      

  4.   

    ItemClick 事件
          单击 ListView 控件中 ListItem 对象时事件发生。语法Private Sub object_ItemClick(ByVal Item As ListItem)ItemClick 事件的语法包含下面部分:部分 描述 
    object 对象表达式,其值是 ListView 控件。 
    listitem 被单击的 ListItem 对象。 
    说明使用此事件决定单击了哪个 ListItem。此事件在 Click 事件之前触发。鼠标单击 ListView 控件的任何部分时触发标准的 Click 事件。只有当鼠标单击 ListItem 对象的文本或图象时才触发 ItemClick 事件。
    ItemClick 事件示例
    本示例将 Biblio.mdb 数据库 Publishers 表的内容植入 ListView 控件。单击 ListItem 对象时,代码检查 Index 属性值。若此属性值小于 15 则不发生任何事情。若属性值大于 15,ListItem 对象将变成幻影。要试用此例,请将 ListView 控件放置在窗体上,并将代码粘贴到窗体的声明部分。运行示例并单击某个项目。Private ListView1_ItemClick(ByVal Item As ListItem)
       Select Case Item.Index
       Case Is = <15 
          Exit Sub
       Case Is => 15
          '切换 Ghosted 属性。
          Item.Ghosted = Abs(Item.Ghosted) - 1
       End Select
    End SubPrivate Sub Form_Load()
       '为 ColumnHeader 对象创建对象变量。
       Dim clmX As ColumnHeader
       '添加 ColumnHeaders。列宽度等于控件宽度
       '除以 ColumnHeader 对象的数目。
       Set clmX = ListView1.ColumnHeaders. _
       Add(, , "Company", ListView1.Width / 3)
       Set clmX = ListView1.ColumnHeaders. _
       Add(, , "Address", ListView1.Width / 3)
       Set clmX = ListView1.ColumnHeaders. _
       Add(, , "Phone", ListView1.Width / 3)
       
       ListView1.BorderStyle = ccFixedSingle '设置 BorderStyle 属性。
       
       '为数据访问对象创建对象变量。
       Dim myDb As Database, myRs As Recordset
       '设置数据库为 BIBLIO.MDB 数据库。
       Set myDb = DBEngine.Workspaces(0).OpenDatabase("BIBLIO.MDB")
       '设置 recordset 为 Publishers 表。
       Set myRs = myDb.OpenRecordset("Publishers", dbOpenDynaset)
       
       '创建变量以添加 ListItem 对象。
       Dim itmX As ListItem   '若当前记录不是最后一条记录,则添加 ListItem 对象。
       'ListItem 对象的文本使用 Name 字段。
       'ListItem 对象的 subitem(1) 使用 Address 字段。
       'ListItem 对象的 subitem(2) 使用 Phone 字段。   While Not myRs.EOF      Set itmX = ListView1.ListItems.Add(, , CStr(myRs!Name))      '如 Address 字段不为空,则设置 subitem 1 为此字段。
          If Not IsNull(myRs!Address) Then
             itmX.SubItems(1) = CStr(myRs!Address) 'Address 字段。
          End If
             
          '如 Phone 字段不为空,则设置 subitem 2 为此字段。
          If Not IsNull(myRs!Telephone) Then
             itmX.SubItems(2) = myRs!Telephone  'Phone 字段。
          End If      myRs.MoveNext '移动到下一条记录。
       Wend
       ListView1.View = lvwReport   '设置 View 属性为报表型。
    End SubPrivate Sub ListView1_ColumnClick(ByVal ColumnHeader As ColumnHeader)
       ListView1.SortKey = ColumnHeader.Index - 1
       ListView1.Sorted = True
    End Sub
      

  5.   

    For i = 1 To ListView1.ListItems.Count
          If ListView1.ListItems(i).Selected = True Then
             ListView1.ListItems(i).Ghosted = True
          End If
    Next i如果listitems.count很大,item_click不是很花时间(设listitems=3000)?因为每选中或取消选中一个listitem都会执行一次item_click事件。
      

  6.   

    如果单击listview而未点击任何item,这时如何判断并清除所有item的selected?
      

  7.   

    还有item_check事件,请大家帮帮我啊,急等用啊。