Desperate dialog boxes
These dialog boxes will do anything to please. They compromise their identity. They flaunt their lack of usability. They do too much and go too far. The names and interfaces of the following examples have been changed to protect the misguided.
OK, the TV drama stops here.
One of the most common mistakes I see in software is a dialog box that acts like a window. These dialog boxes show toolbars with buttons or menus with commands, as in the following pictures. These dialog boxes confuse many users by trying to do too much and not showing predictable behavior.


Another variation is a dialog box that acts like a primary window with minimize, maximize, and resize buttons.
Instead of using this hybrid between a dialog box and a window, programmers should consider using a wizard or changing the dialog box into a primary window for the software.
Primary windows
- Represent applications or user data objects viewed with an application.
- Are displayed for long periods of time.
- Are never modal.
- Do not display OK, Cancel, or Save buttons.
- Allow users to minimize, maximize, or resize them.
- Display menus and toolbars.
Dialog boxes
- Display transient information or, rather, information that can change, such as properties or functions.
- Do not usually display menus or toolbars of buttons.
- Do not usually allow users to minimize, maximize, or resize them.
- Are usually modal. Some dialog boxes can be non-modal, especially with regards to drawing applications.
In the first dialog box in this article, can you see what else might not be user-friendly?
Grid controls
Grid controls often appear on desperate dialog boxes. These controls are tough to implement in a manner that is useful to customers who are not technical. Grid controls often show too much data that is not clearly labeled and is hard to edit.
In the first dialog box in this article, the column labels are not clear. The following abbreviations can confuse folks: Property, Info, Misc, Miscellaneous, and General. These titles do not clearly identify the data. Software text and labels should always be specific.
When coding a grid, programmers should be careful that the grid refreshes quickly, in a manner that does not disrupt the user’s work.
Instead of using a grid, programmers should consider using text boxes, lists, and other controls to display and process data. The software should display a label for each control that clearly indicates the purpose of the data.


