Unified Event Handling
The majority of toolbar buttons act as shortcuts to menu items, so it makes sense to handle equivalent clicks with a single event handler. Unfortunately, Windows Forms does not provide a direct way of doing this. However, it is fairly easy to arrange such a scheme. We can write an event handler for the toolbar that locates the appropriate menu item and then calls its event handler.
All we need is some way of associating toolbar buttons with menu
items. For this, we can use a class provided by the .NET Framework
class libraries called
System.Collections.Hashtable—it is designed
to store associations between objects. We can use this to remember
which toolbar buttons are equivalent to which menu items. Although
the Designer cannot store these associations in a
hash table for you automatically, it
only requires a small amount of code in your form’s
constructor. The following is the necessary C# code:
// Hashtable to associate buttons with menu items
private Hashtable toolbarButtonToMenu;
public MyForm()
{
InitializeComponent();
// Create hash table
toolbarButtonToMenu = new Hashtable();
// Associate ToolBarButtons with MenuItems
toolbarButtonToMenu(toolBarFileNew) = menuFileNew;
toolbarButtonToMenu(toolBarFileOpen) = menuFileOpen;
toolbarButtonToMenu(toolBarEditCopy) = menuEditCopy;
toolbarButtonToMenu(toolBarEditCut) = menuEditCut;
toolbarButtonToMenu(toolBarEditPaste) = menuEditPaste;
toolbarButtonToMenu(toolBarEditDelete) = menuEditDelete;
}The following ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access