Click here to Skip to main content
13,452,991 members (50,570 online)
Click here to Skip to main content
Add your own
alternative version


194 bookmarked
Posted 14 May 2004

ListView Grouping XP Style

, 27 May 2004
Rate this:
Please Sign up or sign in to vote.
Group ListView items by any column, XP style.

Sample Image - GroupListView.jpg


The controls included with Microsoft’s IDE have always been feature rich. However, Microsoft always seems to leave out as many features as they include. The ListView control is no exception to this rule. This project aims at exposing and wrapping a few cool features. First to note is the ability to group items. In Windows Explorer’s View menu, the “Arrange Icon by” menu has a “Show in Groups” option. This allows the ListView to arrange items logically into groups, generally based on file type. The next feature is the ability to set an image as the background of a ListView, whether tiled or a single image. Your My Music folder demonstrates the concept, with a music note image in the lower right hand corner. This project extends the standard ListView with the help of the Windows API to give a more feature rich control.


All the dirty work happens in the ListviewAPI class. Don’t be intimidated if you’ve never used any Windows API. The code simply wraps the SendMessage API using a handful of overrides. The rest is just constants required by the API (documentation available on MSDN).

I’ll spare a long explanation. Download the test project and see for yourself. I included a bitmap file (Note.bmp) to use for setting the background image. You’ll notice, there is extra padding at the bottom of the bitmap. This is because setting the image yOffsetPercent to 100 causes the image to drop below the bottom of the ListView. However, setting the offset to 99 or less causes strange positioning when resizing the window.


  • May 25, 2004 - Support for bolded group headers


This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


About the Author

Web Developer PageLabs
United States United States
I'm the founder of PageLabs, a web-based performance and SEO optimization site.

Give your site a boost in performance, even take a free speed test!

You may also be interested in...

Comments and Discussions

QuestionIn fact, what I'm really concerned about is how to enable the "Tiles" view Pin
Member 121873364-Dec-15 21:31
memberMember 121873364-Dec-15 21:31 
QuestionLVS_ICON mode Pin
Plamen Petrov16-May-12 3:43
memberPlamen Petrov16-May-12 3:43 
GeneralMy vote of 4 Pin
DavidCrow9-Dec-10 9:39
mvpDavidCrow9-Dec-10 9:39 
GeneralXPListview groupings doesn't show... Pin
nardz.slasher22-Jul-07 15:38
membernardz.slasher22-Jul-07 15:38 
GeneralRe: XPListview groupings doesn't show... Pin
Acoustic23-Jul-07 5:43
memberAcoustic23-Jul-07 5:43 
GeneralIterating thru items Pin
michaeldjackson29-Jan-07 11:26
membermichaeldjackson29-Jan-07 11:26 
QuestionDon't see anything? Pin
Aloys Akkerman11-Aug-06 0:52
memberAloys Akkerman11-Aug-06 0:52 
AnswerRe: Don't see anything? Pin
Aloys Akkerman13-Aug-06 11:26
memberAloys Akkerman13-Aug-06 11:26 
AnswerRe: Don't see anything? Pin
moshe.taieb23-Oct-06 21:59
membermoshe.taieb23-Oct-06 21:59 
GeneralGrouping Does not work in win2000 Pin
ahaudi3-Aug-06 22:04
memberahaudi3-Aug-06 22:04 
GeneralRe: Grouping Does not work in win2000 Pin
Acoustic6-Aug-06 8:40
memberAcoustic6-Aug-06 8:40 
QuestionSource code use Pin
dai yuan20-Jul-06 22:42
memberdai yuan20-Jul-06 22:42 
AnswerRe: Source code use Pin
Acoustic22-Jul-06 7:15
memberAcoustic22-Jul-06 7:15 
GeneralRe: Source code use Pin
dai yuan23-Jul-06 15:20
memberdai yuan23-Jul-06 15:20 
GeneralRe: Source code use Pin
BlueLoveCyn27-Mar-07 18:26
memberBlueLoveCyn27-Mar-07 18:26 
GeneralFound some problem Pin
Punprom Kasemsant2-Jun-06 3:13
memberPunprom Kasemsant2-Jun-06 3:13 
First would like to say this is a great article and I knows nothing about API and learn new feature of ListView on VS2005, great work.

I found a problem around Items Collection, could be Group too but not yet work on it. The code works fine but this is VS2005 related (I think), the error is Cross-thread operation not valid. I couldn't see it at first as it does not produce any exception visually but the code is exit un-mutually, I was able to find out until I used Quick View on the debug in VS2005.

Try add below code to the LoadCSV method and after lists are added;
XPListview.XPListViewItemCollection myCollection = view.Items;<br />
itm = myCollection[1];

Then debug on this code, you get the error.

Related topic I found on MSDN:[^]

I solved part of the XPListViewItemCollection with my work colleague, by using Invoking & delegate but if author can have a look and amend the codes so no more error would be great.

Cheers. Roll eyes | :rolleyes:
Generalimprovement emptyAutoGroupText for empty cells Pin
Josema23-Mar-06 14:04
memberJosema23-Mar-06 14:04 
QuestionHow can I change the Color of the Collumns Headers Pin
dvadim23-Mar-06 4:46
memberdvadim23-Mar-06 4:46 
AnswerRe: How can I change the Color of the Collumns Headers Pin
Acoustic6-Aug-06 8:39
memberAcoustic6-Aug-06 8:39 
Generalall event do not execute after a MessageBox Show Pin
byshome19-Mar-06 21:58
memberbyshome19-Mar-06 21:58 
GeneralSelectedIndex Pin
mrabie16-Mar-06 17:37
membermrabie16-Mar-06 17:37 
GeneralRe: SelectedIndex Pin
mrabie16-Mar-06 18:43
membermrabie16-Mar-06 18:43 
AnswerRe: SelectedIndex Pin
Gil1517-Jul-07 7:22
memberGil1517-Jul-07 7:22 
QuestionRe: SelectedIndex Pin
Gil1517-Jul-07 7:28
memberGil1517-Jul-07 7:28 
GeneralRe: SelectedIndex Pin
Member 37080494-Dec-09 10:48
memberMember 37080494-Dec-09 10:48 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Permalink | Advertise | Privacy | Terms of Use | Mobile
Web02-2016 | 2.8.180318.3 | Last Updated 28 May 2004
Article Copyright 2004 by TylerBrinks
Everything else Copyright © CodeProject, 1999-2018
Layout: fixed | fluid