Divider Panel - A tutorial on creating a custom Windows Forms control from Start to Toolbox
Create Custom/Professional UI in WinForms app
Free Desktop Icons
How to make window forms look more beautiful
If you're trying to theme the built-in controls with the Windows Aero user interface, you can find several drop-in control libraries online.
- Windows Forms Aero
- Microsoft's Windows API Code Pack for the .NET Framework
- Fully themed Windows Vista Controls
Most of those libraries include support for the Desktop Window Manager functions, including adding the Aero Glass effect to your application. Daniel Moth explains this in greater detail in a series of articles on his blog:
- Vista: Glass in C#
- Glass in C#, an alternative approach
- Vista glass answers and DwmEnableBlurBehindWindow
Of course, you can quickly get in over your head. In particular, the standard controls do not render correctly over glass because the color black is rendered as transparent. Anything that displays black
text will look washed out and be unreadable. The right way to draw text and images on the extended glass area is described here: Drawing smooth text and pictures on the extended glass area.
You'll also have to remember that these features are only available on Windows Vista and later versions. If your application needs to run under Windows XP (which it probably does), you're going to have to make sure that your application falls back gracefully and that you UI looks good there, too.
In general, however, my suggestion is to use the glass effect sparingly and only when you really feel that it adds something to your application. Don't just throw in gratuitous eye candy because you can. The most important thing is to focus on the usability of your application, from the perspective of its typical user. There is no reason to add additional complexity that doesn't provide any real usability benefits.
Make C# Applications look nice
Go and learn Windows Presentation Foundation. It utilizes DirectX and provides developers with a compact model for building rich user experiences for Windows-based systems. You can start on this tutorial site to learn about what WPF is and what you can do with that framework.
Also check out these components to see the power of WPF:
I'm working on a visual studio 2005 vb.net windows forms project that's been around for several years. It's full of default textboxes, labels, dropdowns, datagrids, datetime pickers -- all the standard stuff. The end result is a very gray, old-looking project.
What would be the best approach to making this project look fresh and snazzy? I'd rather not rewrite the entire solution with all brand new forms objects, but would that be avoidable?
I was actually just sprucing up a dialog today. A lot of it depends on what kind of application you have, and what OS it is running on. A couple of these tips will certainly go a long way to jazzing things up.
Ensure adequate spacing between controls — don't cram them all together. Space is appealing. You might also trying flowing the controls a little differently when you have more space.
Put in some new 3D and glossy images. You can put a big yellow exclamation mark on a custom warning dialog. Replace old toolbar buttons with new ones. Two libraries I have used and like are GlyFX and IconExperience. You can find free ones too. Ideally get a graphic artist to make some custom ones for the specific actions your application does to fill in between the common ones you use (make sure they all go together). That will go a long way to making it look fancy.
Try a different font. Tahoma is a good one. Often times the default font is MS Sans Serif. You can do better. Avoid Times New Roman and Comic Sans though. Also avoid large blocks of bold — use it sparingly. Generally you want all your fonts the same, and only use different fonts sparingly to set certain bits of text apart.
Add subdued colors to certain controls. This is a tricky one. You always want to use subdued colors, nothing bright or stark usually, but the colors should indicate something, or if you have a grid you can use it to show logical grouping. This is a slippery slope. Be aware that users might change their system colors, which will change how your colors look. Ideally give them a few color themes, or the ability to change colors.
Instead of thinking eye-candy, think usability. Make the most common course of action obvious. Mark Miller of DevExpress has a great talk on the Science of User Interface Design. I actually have a video of it and might be able to post it online with a little clean-up.
Invest in a few good quality 3rd party controls. Replacing all your controls could be a pain, but if you are using the default grids for example, you would really jazz it up with a good grid from DevExpress or some other component vendor. Be aware that different vendors have different philosophies for how their components are used, so swapping them out can be a bit of a pain. Start small to test the waters, and then try something really complicated before you commit to replacing all of them. The only thing worse then ugly grids is ugly grids mixed with pretty grids. Consistency is golden!
You also might look at replacing your old tool bars and menus with a Ribbon Control like Microsoft did in Office 2007. Then everyone will think you are really uptown! Again only replacing key components and UI elements without thinking you need to revamp the whole UI.
Of course pay attention to the basics like tab order, etc. Consistency, consistency, consistency.
Some apps lend themselves to full blown skinning, while others don't. Generally you don't want anything flashy that gets used a lot.