On previous projects I looked to third party control suites to give the UI a fancy look without having to put in the effort to build it. If I got lucky the third party control suite added some cool functionality that would make that application more usable for the end user. I have had good success with Janus controls; they were fairly straight forward and added some zing to the app. This is not too say there was not some learning involved with using them but it came quickly.
On my current project the client chose to use Infragistics; what a pain in the ass. I would be happy to not have to look at their controls for a long time (I will not be so lucky). We have had some very strange problems such as the UltraLabel leaking through tab pages and usability issues such as the numeric edit defaults to clearing out the current value as soon as the user sets focus on it. On the dev side they could of not possibly made the controls harder to use with the naming conventions. I don’t see why they could not follow the .NET framework’s lead and name properties appropriately. A good example is the “visible” property on a control which we are all used to and Infragistics using instead a property named “hidden”. These naming misnomers are all over Infragistics and it drives me nuts. Now if you want to allow adding of records to a grid you have to dig deep in the property structure until you find the right one buried in a property group called Overrides.
Now some ranting on the structure of the classes the Infragistics controls derive from. There is definitely common functionality among controls, most controls have a property that has something to do with style (i.e. Office 2003, XP…). It would be nice to loop through controls and set this style property on all infragistics controls to change the appearance of the application. Well that is hard to do when each control has its own class where this “style” (sometimes it is named differently) property resides. So I figured they at least have an interface for these common properties, no such luck. So if you want to loop Infragistics controls and change “common” properties (such as the style) you better be ready to write a switch statement to check the control type and cast often.
As I’m quickly becoming a fan of CodeRush and already building plugins for it I think the next control suite I’m going to dig into is DevExpress’s. Some good advice I can give is be familiar with third party controls and what they can do but use the .NET controls first and only go to third party controls when you have a good reason to use them.