Ideal .NET WinForms (C#, VB.net) replacement list view component. More features, less limitations, fast and optimized.
Hi, my name is Jiri Novotny and I'm the founder of Dextronet.com, a software company that operates ComponentOwl.com. Me and my team think of ourselves as independent software vendors (or ISVs).
Surprise surprise - as it is with most independent components today, we did not originally actually intended to create Better ListView.
Our flagship product is Swift To-Do List, a desktop task management software. The old version of Swift To-Do List has been written in Visual Basic 6 which has many limitations, so we've decided to make a total rewrite in VB.NET and C#. The development started in July 2009.
Because Swift To-Do List is highly list-centric product (as the name suggests :-), it soon become apparent that we will need excellent ListView control. The ListView control included in .NET just didn't cut it. Not only its features are very limited, but there are braincracking bugs and strange behavior in lots of cases. In fact, the default .NET ListView was so bad, that I've oftentimes wished I could just use the ListView included in VB6 – it has at least behaved mostly correctly.
So, because we couldn't use the default .NET ListView, I began searching for a replacement ListView control. My requirements were actually not very demanding - I wanted a ListView control that looked and behaved similarly as the one used in Windows Explorer.
Unfortunately, I've soon discovered that in reality, I want lots of things that are not taken for granted in any ListView control that I've found. My requirements for a usable .NET ListView control are:
There was also lot of nice-to-have things that I've looked for, like:
I did not want to use any DataGrid-based control, as it can't really replace ListView control – it is much harder to manipulate for the user in most cases, and it doesn't support many things that ListView does.
Swift To-Do List is a mass-market product, so it needed a ListView control that behaved as expected in all cases, no exceptions. The ListView control used in Windows Explorer is a great model: Because every user knows how to work with Windows Explorer ListView already, you can leverage that knowledge in your own applications. Your applications will be truly easy to use and learn.
I've looked over dozen of ListView controls – and I'm not afraid to name them, because they just don't meet the above criteria. The controls I looked over included ListView from SoftGroup, three different open source ListView controls from CodeProject, ListView from Lidor systems, Grid and TreeView-Grid hybrid from DevExpres, WinListView from Infragistics, I've also looked at all ListView controls to be found at CodeGuru and ComponentSource and more – basically everything that I could Google and everything from all well-known (or not so well known) component providers.
I was disappointed with every single of these controls. Not one of them met my criteria.
Believe me, I wanted to find the perfect ListView control – after all, I desperately needed it so we could use it in our own product. But what I've found during my extensive research? Nothing. Null. Nilch. Nada. Zero. My heart was broken. The dreams of our awesome Swift To-Do List 7 product started to shatter, because we needed an adequate ListView control first. When it comes to user experience, we simply couldn't settle for anything less than great.
But we haven't given up. The solution? To create our own ListView control. A Better ListView control. It was not originally intended to be a product on it's own, but when it has been finished, it was so good that it would be a sin to keep it selfishly just for ourselves. So we've started selling it. :-)
When we started building our own better ListView control, we wanted it to inherit from System.Windows.Forms.ListView at first. We've tried our best, but some of the bugs of .NET ListView were simply impossible to fix, even with ridiculous hacks. However, luck has shined upon us.
We've met Libor Tinka, a genius C# developer with extensive experience with not just programming in general, but specifically Windows control development as well. He's the author and sole developer of ImagingShop, a powerful digital photography processing desktop application that includes many of his custom controls, and lot's of hardcore mathematics and unique algorithms (It has over 220k lines of code in total!). That guy really is a genius and let me tell you, the code he writes is just beautiful. He's an artist.
When we've asked Libor to create a better ListView control for us, he accepted the challenge.
(By the way, it might look easy at first, but implementing your own ListView control is extremely difficult, daunting and complicated task – there are so many corner cases in the control's behavior that it will make your brain want run away.)
We've worked very closely with Libor during the intensive development process. Fast forward 12 months into the future - Better ListView is done, and Libor is an integral part of our team. We still work together as we support and constantly enhance Better Listview.
Better ListView is now used not just in Swift To-Do List, but also in Libor's own product ImagingShop, so we are truly eating our own dog food. This is your guarantee that we will not stop supporting Better ListView, fixing bugs and implementing new features – it's the core and heart of our own desktop software products after all. We walk the talk.
If Better ListView existed before, I know I would be absolutely positively thrilled about it. And so I hope that you are thrilled about it now that you've found it.
Any questions or comments? I would love to get them. Contact me at novotny (at) dextronet (dot) com