Friday, August 14, 2015

The Art in Courtesy

A typical windows form has tons of small visual cues that you can leverage to provide ultimate courtesy to your client. To start with consider the lowly mouse-pointer icon. You can of course change this to different icons under different circumstances to signal various conditions. Always change the pointer to an hourglass if your process is running a thread that disables user input. Change it to a question mark when they hover over a label, and then provide help about the field when they click on that label.

Use the status area strip at the bottom of a form to show messages about the internal tasks you are performing. These should be detailed enough to provide helpful information should you need to debug a client's problem during operation.

A mouse has two buttons usually... take advantage of this by providing right-click context menus where appropriate.

When you expect data to be entered in a specific format, overlay a graphic example (mm/dd/yy).

Make the effort to disable buttons, checkboxes, menu items, and fields when they are logically unavailable. If a field on a form is required for entry before the submit button can be pressed, then that button should not enable until after the required field has been entered.

Always indicate which fields are required in a manner that is both clear and consistent, yet discreet.

Take advantage of the title bar: it can show both variable words and an icon, and these display when your application is minimized.

When a user hovers over a field, they may be confused about what to enter. You may pop up a short callout of information, or even a callout help-button that will display a sub form.

Finally on any operation that require extensive processing time, display a progress bar showing the estimated time to completion. Run the long task in a background thread so that the user interface can still be moved or minimized. Provide a button to cancel any long-running operation.

Correctly handling all the small visual cues requires quite a bit more effort during development, but doing so marks the difference between a hack and a professional developer.