/// <summary>
        /// Raises the MouseMove event.
        /// </summary>
        /// <param name="e">A MouseEventArgs that contains the event data.</param>
        protected virtual void OnMouseMove(MouseEventArgs e)
        {
            //	If any mouse button is down, we will not update the mouse lightweight control.
            if (e.Button != MouseButtons.None)
            {
                //	If we have a mouse lightweight control, raise its MouseMove event.  Otherwise,
                //	call the base class's method to raise the MouseMove event on this control.
                if (MouseBehaviorControl != null)
                {
                    MouseBehaviorControl.RaiseMouseMove(TranslateMouseEventArgsForBehaviorControl(e, MouseBehaviorControl));
                }
            }
            else
            {
                //	Update the mouse lightweight control.
                UpdateMouseBehaviorControl(new Point(e.X, e.Y));

                //	If we have a mouse lightweight control, raise its MouseMove event.  Otherwise,
                //	call the base class's method to raise the MouseMove event on this control.
                if (MouseBehaviorControl != null)
                {
                    MouseBehaviorControl.RaiseMouseMove(TranslateMouseEventArgsForBehaviorControl(e, MouseBehaviorControl));
                }
            }
        }
 /// <summary>
 /// Raises the Click event.
 /// </summary>
 /// <param name="e">A EventArgs that contains the event data.</param>
 protected virtual void OnClick(EventArgs e)
 {
     //	If we have a mouse lightweight control, raise its Click event.  Otherwise, call
     //	the base class's method to raise the Click event on this control.
     if (MouseBehaviorControl != null)
     {
         MouseBehaviorControl.RaiseClick(e);
     }
 }
        /// <summary>
        /// Raises the MouseUp event.
        /// </summary>
        /// <param name="e">A MouseEventArgs that contains the event data.</param>
        protected virtual void OnMouseUp(MouseEventArgs e)
        {
            //	Update the mouse lightweight control.
            UpdateMouseBehaviorControl(new Point(e.X, e.Y));

            //	If we have a mouse wheel lightweight control, raise its MouseUp event.  Otherwise,
            //	call the base class's method to raise the MouseUp event on this control.
            if (MouseBehaviorControl != null)
            {
                MouseBehaviorControl.RaiseMouseUp(TranslateMouseEventArgsForBehaviorControl(e, MouseBehaviorControl));
            }
        }
        /// <summary>
        /// Raises the MouseHover event.
        /// </summary>
        /// <param name="e">An EventArgs that contains the event data.</param>
        protected virtual void OnMouseHover(EventArgs e)
        {
            //	Update the mouse lightweight control.
            UpdateMouseBehaviorControl();

            //	If we have a mouse lightweight control, raise its MouseHover event.  Otherwise,
            //	call the base class's method to raise the MouseHover event on this control.
            if (MouseBehaviorControl != null)
            {
                MouseBehaviorControl.RaiseMouseHover(EventArgs.Empty);
            }
        }
        /// <summary>
        /// Raises the MouseLeave event.
        /// </summary>
        /// <param name="e">An EventArgs that contains the event data.</param>
        protected virtual void OnMouseLeave(EventArgs e)
        {
            //	Update the mouse lightweight control.
            UpdateMouseBehaviorControl();

            //	If we have a mouse lightweight control, raise its MouseLeave event, then clear it.
            //	Otherwise, call the base class's method to raise the MouseLeave event on this
            //	control.
            if (MouseBehaviorControl != null)
            {
                MouseBehaviorControl.RaiseMouseLeave(EventArgs.Empty);
                MouseBehaviorControl = null;
            }
        }