I have been arguing for years that disabled (greyed-out) menu items and buttons are in general a bad idea because it is impossible for users to know why the associated function is not enabled at the. It is quite frustrating: the user sees a menu command that looks like it might be what is needed, but it is disabled, and there is not at all obvious why it is disabled. I wrote a blog entry about this last year: “Please Don’t Disable My Menu Options!” and includes some references to noted UI experts on the issue.
Today a colleague pointed out to me a small advance in the area: the new UI guidelines for Vista include this recommendation:
Reconsider disabled controls. Disabled controls can be hard to use because users literally have to deduce why they are disabled. Disable a control when users expect it to apply and they can easily deduce why the control is disabled. Remove the control when there is no way for users to enable it or they don’t expect it to apply, or leave it enabled, but give an error message when it is used incorrectly.
- Tip: If you aren’t sure whether you should disable a control or give an error message, start by composing the error message that you might give. If the error message contains helpful information that target users aren’t likely to quickly deduce, leave the control enabled and give the error. Otherwise, disable the control.
Thank you, Microsoft. You have reaffirmed my faith that some day, user interfaces will be advanced beyond the “simple rules and superstition” that we have today. It is a SMALL step, to be sure, and still leaves plenty of room for misapplication. My experience is that programmers usually make the mistake of thinking that a user will find something obvious, because the programmer’s knowledge of the system makes it hard to understand the viewpoint of someone who does not understand the system. Consequently, we will see whether programmers will correctly estimate whether users “can easily deduce” why something is disabled. Even if the reason is obvious, why not go ahead and display a message spelling it out. Leaving it disabled is a lot like a taunt; e.g. “if you can’t figure out why this control is disabled, then you shouldn’t be using this product“. I have been taught that when a person asks a question, no matter how obvious the answer, it is most polite to simply answer the question. A small step in the right direction is better than none.