title: Updating UI objects in windows forms
body: <p>Pre .net I was using MFC, ON_UPDATE_COMMAND_UI, and the CCmdUI class to update the state of my windows UI.
  From the older MFC/Win32 reference:</p>
  <blockquote>
  <p>Typically, menu items and toolbar buttons have more than one state. For
  example, a menu item is grayed
  (dimmed) if it is unavailable in the
  present context. Menu items can also
  be checked or unchecked. A toolbar
  button can also be disabled if
  unavailable, or it can be checked.</p>
  <p>Who updates the state of these items
  as program conditions change?
  Logically, if a menu item generates a
  command that is handled by, say, a
  document, it makes sense to have the
  document update the menu item. The
  document probably contains the
  information on which the update is
  based.</p>
  <p>If a command has multiple
  user-interface objects (perhaps a menu
  item and a toolbar button), both are
  routed to the same handler function.
  This encapsulates your user-interface
  update code for all of the equivalent
  user-interface objects in a single
  place.</p>
  <p>The framework provides a convenient
  interface for automatically updating
  user-interface objects. You can choose
  to do the updating in some other way,
  but the interface provided is
  efficient and easy to use.</p>
  </blockquote>
  <p>What is the guidance for .net Windows Forms? I am using an Application.Idle handler in the main form but am not sure this is the best way to do this. About the time I put all my UI updates in the Idle event handler my app started to show some performance problems, and I don't have the metrics to track this down yet. Not sure if it's related.</p>