views:

93

answers:

3

I've got a "Main Window" containing quite a few things, including, in the status bar (at the very bottom of the window), a "Support" button, which the user can use at any time to open a window containing our support phone number, along with a little chat functionality if the user prefers to chat with us.

The problem is that if the program is displaying a modal dialog, the "support" button is not clickable anymore.

Stopping using modal dialogs is not an option ; I use them because I sometimes want to force the user into performing a specific task before I can do something else in the software.

What's the best way to let the user contact the support without having to close the current modal dialog ?

+1  A: 

Using a shortcut key instead of a button may be an option. The functionality could be factorized into a base form class like this :

public class BaseForm : Form
{

  protected override bool ProcessDialogKey(Keys keyData)
        {
            if (keyData == Keys.F1)
            {
                SupportForm f = new SupportForm ();
                f.Show();

            }
            return base.ProcessDialogKey(keyData);
        }
  }
Brann
+5  A: 

Modal dialogs should behave as modal dialogs, the user won't expect to be able to click a button in the main window even if it were possible.

Your best bet is to put a support button on the dialog too.

Tom
Agreed; it's not a good idea to bend widely accepted behaviour since it may bring more confusion than value for the users.
Fredrik Mörk
+1  A: 

Not using modal dialogs is an option. You can disable other parts of your interface during the required interaction to get whatever it is that you need out of the user.

The solution is to avoid situations where the user 'must' do something. Modal dialogs often get in the way if, for example, the user wants to quit the application right at that moment, or see something in a backgrounded window, or refer to another part of your application. Instead of using them, design your interaction so that if there is a required action/piece of information, it's folded into the application logic.

Think about website design -- modal dialogs are very rarely found on the web, and for good reason -- they disrupt the user's workflow unnecessarily. And yet plenty of sites have 'required' information.

Don't use modal dialogs; they are a shortcut to avoid a better design.

Alex Feinman