I’ve been taking a look at a number of UI Widget control libraries recently for my Windows Forms apps. I’ve been pretty disappointed by the stuff that ships in the box in .Net - specifically menus and toolbars are stuck in ancient times and don’t really measure up to modern UI guidelines. WinForms Toolbars too have so many quirks that make them next to unusable.
So, for the last month or so I’ve been looking at a number of UI libraries and have played with them off an on in a few of my smaller apps I’m working on. Most of them work well and provide the look and feel that I’m after (OfficeXp or 2003). However, I’ve been having a few issues with most them:
Licensing
Some vendors are very strict about what they’re tools can be used with. DataDynamics goes as far as saying you can’t use their controls (and ActiveReports too) for developer tools! Period. Since I’m building mostly tools these days it sure helps to have something that you can distribute often with source code (by pointing at a demo version at least).
Size
Most will add at least 1 meg of DLL(s) to your application. I’ve also noticed some controls generate a huge amount of code for each widget that gets dumped. Although flexible in many cases the pure featurism of these controls is setting a huge number of settings at startup.
Speed
Most of the tools I’ve tried feel really slow. I have a couple of forms with some moderately complex toolbars/menus and these forms are just dead slow presumably due to the toolbar stuff. Especially startup speed is very bad with some of these controls as they are apparently are loading a huge amount of runtime stuff that the JIT compiles. Speed is a big issue also in the development environment.
Designer
Most tools use a custom designer interface to create their toolbars and menus and these things invariably feel very clumsy and user unfriendly. Most are hierarchical in layout and use a tree or multiple trees to allow attaching of items. Call me picky but that UI is horrible for building a layout.
SandBar to the rescue
However today I found a nice surprise: While looking over the source of RSSBandit I noticed that they are using a library called Sandbar from www.divil.co.uk. I was pleasantly surprised by this library which is very clean and light in design and addresses most of the things I found lacking elsewhere. SandBar is only one of a few components available (Docking Suite, EyeFinder (new Outlook bar) being a couple of others) but the nice thing is that these things are relatively small and modular. And in my preliminary testing I found that they are also very light in memory usage and are by far the fastest controls I’ve used (menus actually pop up immediately on first open instead of the 1 sec+ hesitation with others).
The designer is also nice – because there is no designer. You simply drop controls on your toolbars and menus work just like the WinForm menu designer. And best of all it is priced reasonably (free for GPL licensing and very reasonable pricing for commercial use) as you can buy only what you need instead of a whole UI pack which is often overkill.
From the use I’ve made of it through the day today I can say that Sandbar does not have the feature breadth of some of the other products – it’s much leaner though and it provides the core functionality that you really need easily.
I'm sure there are probably a few other libraries that I don't know about. Maybe some others can be pointed out.
Here's what I tried:
SharpUI
ComponentOne Studio
DotNetBar
SandBar