//- ctor
    public PropertyGridHost(DesignSurfaceManagerExt surfaceManager) {
        const string _signature_ = _Name_ + @"::ctor()";

        InitializeComponent();
        this.Dock = DockStyle.Fill;

        //- the surface manager strictly tied with PropertyGridHost
        if( null == surfaceManager )
            throw new ArgumentNullException( "surfaceManager", _signature_ + " - Exception: invalid argument (null)!" );

        SurfaceManager = surfaceManager;

        pgrdPropertyGrid.ToolbarVisible = true;
        pgrdPropertyGrid.HelpVisible = true;


        //- the ComboBox is an OBSERVER of PropertyGridHost event: SelectedObjectsChanged
        //- everytime someone select a new object inside the PropertyGridHost
        //-                     |
        //-                     +---> the event PropertyGridHost.SelectedObjectsChanged is fired
        //-                                                                              |
        //-                           the ReloadComboBox() method is called <------------+
        //- 
        //-
        //-
        //- 
        pgrdPropertyGrid.SelectedObjectsChanged += ( object sender, System.EventArgs e ) =>
        {
            ReloadComboBox();
        };


        //- the PropertyGridHost is an OBSERVER of ComboBox event: SelectedIndexChanged
        //- everytime someone select a new object inside the ComboBox
        //-                     |
        //-                     +---> the event ComboBox.SelectedIndexChanged is fired
        //-                                                                         |
        //-     the OrientPropertyGridTowardsObject() method is called <------------+
        //- 
        //-
        pgrdComboBox.SelectedIndexChanged += ( object sender, System.EventArgs e )=>
        {
            if( _bSuppressEvents )
                return;
            OrientPropertyGridTowardsObject();
        };
    }
        public PropertyGridHost(DesignSurfaceManagerExt surfaceManager)
        {
            InitializeComponent();
            this.Dock = DockStyle.Fill;

            this.SurfaceManager = surfaceManager;

            pgrdPropertyGrid.ToolbarVisible = true;
            pgrdPropertyGrid.HelpVisible = true;

            pgrdPropertyGrid.SelectedObjectsChanged += ( object sender, System.EventArgs e ) =>
            {
                ReloadComboBox();

                if (pgrdPropertyGrid.SelectedObjects.Count() == 1)
                {
                    this.SelectedObject = pgrdPropertyGrid.SelectedObject;

                    if (pgrdPropertyGrid.SelectedObject is EbControl && (pgrdPropertyGrid.SelectedObject as EbControl).Parent != null)
                        pgrdComboBox.SelectedIndex = pgrdComboBox.Items.IndexOf((pgrdPropertyGrid.SelectedObject as EbControl).Parent);
                }

                OrientPropertyGridTowardsObject();
            };

            pgrdPropertyGrid.PropertyValueChanged += (object s, PropertyValueChangedEventArgs e) =>
            {
                if (this.SelectedObject != null && pgrdComboBox.SelectedItem != null)
                {
                    if (pgrdComboBox.SelectedItem is IEbControlContainer)
                        (pgrdComboBox.SelectedItem as IEbControlContainer).DoDesignerRefresh();

                    if (pgrdComboBox.SelectedItem is IEbControl)
                        (pgrdComboBox.SelectedItem as IEbControl).DoDesignerRefresh();
                }
            };

            pgrdComboBox.SelectedIndexChanged += ( object sender, System.EventArgs e )=>
            {
                if( _bSuppressEvents )
                    return;

                if ((pgrdComboBox.Items[pgrdComboBox.SelectedIndex] is IEbControl))
                    this.SelectedObject = (pgrdComboBox.Items[pgrdComboBox.SelectedIndex] as IEbControl).EbControl;
            };
        }