I have a window with multiple tabpages. On one tab, I have a set of controls designed to allow the user to "include" or "exclude" any of a set of pre-defined items from some consideration. You've seen it before; a list of "included" items and "available" items, side-by-side, with a column of buttons in between allowing the user to "include all", "include selected", "exclude selected", "exclude all". In this scenario, the most efficient method for selection of items in the lists is "click to select, click again to deselect". If the user makes a mistake, no big deal, they just select the one they included or excluded by accident and reverse the change.

In another tab of the same window, I have a set of controls that allows the user to specify a set of multiple items by typing in the necessary info. This control has a textbox, an "Add" button that puts what they typed in into the list, the list itself, and a "Delete" button that removes selections from the list. In this situation, the "simple" method of selection is dangerous because the user could have inadvertently selected something which has been scrolled out of view, and would then have to type the information back in to correct their mistake (or revert all changes). Instead, the desired strategy is the "click to select a single item and unselect all others; Ctrl+click to select multiple; Shift+click to select ranges" model.

The mixing of selection strategies between lists that have the same appearance doesn't really seem like a great idea; someone will inevitably, eventually, have a problem related to thinking either of the lists works the other way (even though the users themselves are asking for the differing mechanics).

So the questions are, first, is this something to be avoided, or is it OK to mix behaviors? If it's OK, is there something I should be doing to try to inform or notify the user on the fly, such as tooltips?

EDIT: apparently "picture >= word*1000" so let me grab some screenshots:

This first control is the one that the user wants to use "simple" selection (click to select, click again to deselect), because the lists of things can be quite long, and mistakes are easily undone:

enter image description here

The second control below is the one the user wants to use "extended" selection (click to select one, deselecting all others; ctrl+click to select multiple; shift+click to select a range from the previous selection), because the number of items will be smaller, and selected items go away completely instead of just moving around so it takes more to undo a mistake:

enter image description here

2 Answers 2


I prefer to just use a standard listbox control. This provides for a uniform experience for people who are accustomed to the standard Windows behavior. Also, it is not clear to me why ctrl+click less dangerous than toggle select.

One strategy I have seen used to make it clearer to users what is going on is to provide two listboxes and arrow buttons to push elements between the two listboxes. This can be helpful if dealing with a list of possible choices and a second list of current choices.


download bmml source – Wireframes created with Balsamiq Mockups

  • See my edit; that's exactly what I have done. The user wants both lists of this two-list control to use simple toggle-selecting because that's easier to just scan through the lists selecting the ones you want without worrying about pressing Ctrl.
    – KeithS
    Aug 17, 2012 at 22:09
  • For another control with only one list, and a control to type in data to add, the user wants to retain the Ctrl-click functionality to select multiple ones, because when you select things in the second list it's because you're deleting them entirely, and they want the user to be SURE they want to remove multiple items.
    – KeithS
    Aug 17, 2012 at 22:12

If the user makes a mistake, no big deal, they just select the one they included or excluded by accident and reverse the change.

You've just hit upon the solution to your dilemma. Provide an undo feature.

The side-by-side UI (sort of) provides a built-in way to undo. (I say sort of because, if the list is really long, it could still be a giant headache to undo.)

The add/delete UI doesn't really have any natural undo. You delete your times and they're gone. Hopefully, you remember what they were.

If you provide an undo feature, your question becomes moot: you allow multiple, shift-click selection for all lists, consistently throughout your UI.

How you implement the undo capability is another question. You can do a GMail-style undo, where you provide a bright banner at the top of your tab describing the action that was just taken and providing a button to undo it. Alternatively, you can go with a dialog-style undo, where you offer OK and Cancel buttons, Cancel allowing you to back out of what you've done before it takes effect. The former is more common in web apps, the latter more common in desktop apps. There are other variants as well, such as MS Office-style multiple undo (although that seems like it would be hard to follow in this particular situation).

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.