You are currently offline, waiting for your internet to reconnect

How To Add Full Row Select Functionality to a ListView Control

This article was previously published under Q181440
Retired KB Content Disclaimer
This article was written about products for which Microsoft no longer offers support. Therefore, this article is offered "as is" and will no longer be updated.
SUMMARY
The default behavior of the ListView control, when in Report View, is theability to select only the item on the far left of the list. If you try toselect any of the sub-items, nothing happens. Only the first item isavailable to be selected.

You can avoid this limitation by adding a ListView extended style,LVS_EX_FULLROWSELECT, to the current ListView style. With this extendedstyle you can select any sub-item and the entire row will be selected.
MORE INFORMATION

Step-by-Step Example

  1. Start a new Standard EXE project. Form1 is created by default.
  2. Select Components on the Project menu. Click the check box next to "Microsoft Windows Common Controls 5.0," and then click OK.
  3. Add a ListView control (ListView1) to Form1.
  4. Add a CommandButton (Command1) to Form1.
  5. Add the following code to the Form module:
          Private Declare Function SendMessage Lib "user32" Alias _        "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal _        wParam As Long, lParam As Any) As Long      Const LVS_EX_FULLROWSELECT = &H20      Const LVM_FIRST = &H1000      Const LVM_GETEXTENDEDLISTVIEWSTYLE = LVM_FIRST + &H37      Const LVM_SETEXTENDEDLISTVIEWSTYLE = LVM_FIRST + &H36      Private Sub Command1_Click()        Dim lStyle As Long        lStyle = SendMessage(ListView1.hwnd, _           LVM_GETEXTENDEDLISTVIEWSTYLE, 0, 0)        lStyle = lStyle Or LVS_EX_FULLROWSELECT        Call SendMessage(ListView1.hwnd, LVM_SETEXTENDEDLISTVIEWSTYLE, _           0, ByVal lStyle)      End Sub      Private Sub Form_Load()        'Add two Column Headers to the ListView control        Set clmAdd = ListView1.ColumnHeaders.Add(Text:="Name")        Set clmAdd = ListView1.ColumnHeaders.Add(Text:="Date")        'Set the view property of the Listview control to Report view        ListView1.View = lvwReport        'Add data to the ListView control        Set itmAdd = ListView1.ListItems.Add(Text:="Joe")        itmAdd.SubItems(1) = "05/07/97"        Set itmAdd = ListView1.ListItems.Add(Text:="Sally")        itmAdd.SubItems(1) = "04/08/97"        Set itmAdd = ListView1.ListItems.Add(Text:="Bill")        itmAdd.SubItems(1) = "05/29/97"        Set itmAdd = ListView1.ListItems.Add(Text:="Fred")        itmAdd.SubItems(1) = "05/17/97"        Set itmAdd = ListView1.ListItems.Add(Text:="Anne")        itmAdd.SubItems(1) = "04/01/97"      End Sub						
  6. Press the F5 key to start the program. Click one of the entries in the Date column and observe that nothing occurs. Click on an entry in the Name column and note that only the name is highlighted.
  7. Click the command button and then click on entries in each column. Note that an entire row can now be selected by clicking an item in either column.
Properties

Article ID: 181440 - Last Review: 06/29/2004 21:07:03 - Revision: 2.1

  • Microsoft Visual Basic 5.0 Control Creation Edition
  • Microsoft Visual Basic 5.0 Professional Edition
  • Microsoft Visual Basic 5.0 Enterprise Edition
  • kbhowto KB181440
Feedback