Inheritance: System.Windows.Forms.Control
        /// <summary>
        /// Initialize a new instance of the ViewLayoutControl class.
        /// </summary>
        /// <param name="viewControl">View control to use as child.</param>
        /// <param name="rootControl">Top level visual control.</param>
        /// <param name="viewChild">View used to size and position the child control.</param>
        public ViewLayoutControl(ViewControl viewControl,
                                 VisualControl rootControl,
                                 ViewBase viewChild)
        {
            Debug.Assert(viewControl != null);
            Debug.Assert(rootControl != null);
            Debug.Assert(viewChild != null);

            // Default values
            _layoutOffset = Point.Empty;

            // Remember the view
            _viewChild = viewChild;

            // Ensure the child is hooked into the hierarchy of elements
            _viewChild.Parent = this;

            // Create the view control instance
            _viewControl = viewControl;

            // Back reference hookup
            _viewControl.ViewLayoutControl = this;

            // Start off invisible until first layed out
            _viewControl.Visible = false;

            // Ensure that all view elements inside here use our control
            OwningControl = _viewControl;

            // Add our new control to the provided parent collection
            CommonHelper.AddControlToParent(rootControl, _viewControl);
        }
 /// <summary>
 /// Make the provided control parented to ourself.
 /// </summary>
 /// <param name="c">Control to reparent.</param>
 public void MakeParent(Control c)
 {
     // Ask the view control to perform reparenting
     ViewControl.MakeParent(c);
 }
        /// <summary>
        /// Release unmanaged and optionally managed resources.
        /// </summary>
        /// <param name="disposing">Called from Dispose method.</param>
        protected override void Dispose(bool disposing)
        {
            // If called from explicit call to Dispose
            if (disposing)
            {
                if (_viewControl != null)
                {
                    try
                    {
                        ViewControl vc = _viewControl;
                        _viewControl = null;
                        CommonHelper.RemoveControlFromParent(vc);
                    }
                    catch { }
                }

                if (_viewChild != null)
                {
                    _viewChild.Dispose();
                    _viewChild = null;
                }
            }

            base.Dispose(disposing);
        }