ToolStripContentPanel.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / ndp / fx / src / WinForms / Managed / System / WinForms / ToolStripContentPanel.cs / 1 / ToolStripContentPanel.cs

                            //------------------------------------------------------------------------------ 
// 
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// 
//----------------------------------------------------------------------------- 

 
namespace System.Windows.Forms { 
    using System.Diagnostics;
    using System; 
    using System.ComponentModel;
    using System.Drawing;
    using System.Collections.Specialized;
    using System.Runtime.InteropServices; 
    using System.Diagnostics.CodeAnalysis;
    using System.ComponentModel.Design; 
 
    [
    ComVisible(true), 
    ClassInterface(ClassInterfaceType.AutoDispatch),
    Designer("System.Windows.Forms.Design.ToolStripContentPanelDesigner, " + AssemblyRef.SystemDesign),
    DefaultEvent("Load"),
    Docking(DockingBehavior.Never), 
    InitializationEvent("Load"),
    ToolboxItem(false) 
    ] 
    public class ToolStripContentPanel : Panel {
        private ToolStripRendererSwitcher      rendererSwitcher         = null; 
        private BitVector32                    state                    = new BitVector32();
        private static readonly int stateLastDoubleBuffer             = BitVector32.CreateMask();

        private static readonly object EventRendererChanged          = new object(); 
        private static readonly object EventLoad                     = new object();
 
        public ToolStripContentPanel() { 

            // Consider: OptimizedDoubleBuffer 
            SetStyle(ControlStyles.ResizeRedraw | ControlStyles.SupportsTransparentBackColor, true);
        }

         ///  
         ///     Allows the control to optionally shrink when AutoSize is true.
         ///  
         [ 
         EditorBrowsable(EditorBrowsableState.Never),
         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), 
         Browsable(false),
         Localizable(false)
         ]
         public override AutoSizeMode AutoSizeMode { 
            get {
                return AutoSizeMode.GrowOnly; 
            } 
            set {
            } 
         }

         [
         Browsable(false), 
         EditorBrowsable(EditorBrowsableState.Never), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)
         ] 
         public override AnchorStyles Anchor { 
             get {
                 return base.Anchor; 
             }
             set {
                 base.Anchor = value;
             } 
         }
 
         [ 
        Browsable(false),
        EditorBrowsable(EditorBrowsableState.Never) 
        ]
        public override bool AutoScroll {
            get { return base.AutoScroll; }
            set { base.AutoScroll = value; } 
        }
 
        [ 
        Browsable(false),
        EditorBrowsable(EditorBrowsableState.Never), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden) 
        ]
        public new Size AutoScrollMargin {
            get { return base.AutoScrollMargin; }
            set { base.AutoScrollMargin = value; } 
        }
 
        [ 
        Browsable(false),
        EditorBrowsable(EditorBrowsableState.Never), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden) 
        ]
        public new Size AutoScrollMinSize {
            get { return base.AutoScrollMinSize; }
            set { base.AutoScrollMinSize = value; } 
        }
 
        [ 
        Browsable(false),
        EditorBrowsable(EditorBrowsableState.Never), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden) 
        ]
        public override bool AutoSize {
            get { return base.AutoSize; }
            set { base.AutoSize = value; } 
        }
 
 
        public override Color BackColor {
            get { 
                return base.BackColor;
            }

            set { 

                // To support transparency on ToolStripContainer, we need this check 
                // to ensure that background color of the container reflects the 
                // ContentPanel
                if (this.ParentInternal is ToolStripContainer && value == Color.Transparent) { 
                   this.ParentInternal.BackColor = Color.Transparent;
                }
                base.BackColor = value;
            } 
        }
 
 
        [
        Browsable(false), 
        EditorBrowsable(EditorBrowsableState.Never), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)
        ]
        public new event EventHandler AutoSizeChanged{
            add { 
                base.AutoSizeChanged += value;
            } 
            remove { 
                base.AutoSizeChanged -= value;
            } 
        }

        [
        Browsable(false), 
        EditorBrowsable(EditorBrowsableState.Never), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)
        ] 
        public new bool CausesValidation { 
            get { return base.CausesValidation; }
            set { base.CausesValidation = value; } 
        }

        [Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]
        public new event EventHandler CausesValidationChanged { 
            add {
                base.CausesValidationChanged += value; 
            } 
            remove {
                base.CausesValidationChanged -= value; 
            }
        }

        [ 
        Browsable(false),
        EditorBrowsable(EditorBrowsableState.Never), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden) 
        ] 
        public override DockStyle Dock {
            get { 
                return base.Dock;
            }
            set {
                base.Dock=value; 
            }
        } 
        [ 
        Browsable(false),
        EditorBrowsable(EditorBrowsableState.Never), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden) 
        ]
        public new event EventHandler DockChanged {
           add {
                base.DockChanged += value; 
            }
            remove { 
                base.DockChanged -= value; 
            }
        } 

        [SRCategory(SR.CatBehavior), SRDescription(SR.ToolStripContentPanelOnLoadDescr)]
        public event EventHandler Load {
            add { 
                Events.AddHandler(EventLoad, value);
            } 
            remove { 
                Events.RemoveHandler(EventLoad, value);
            } 
        }

        [
        Browsable(false), 
        EditorBrowsable(EditorBrowsableState.Never), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)
        ] 
        public new Point Location { 
            get { return base.Location; }
            set { base.Location = value; } 
        }

        [
        Browsable(false), 
        EditorBrowsable(EditorBrowsableState.Never), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)
        ] 
        public new event EventHandler LocationChanged { 
           add {
                base.LocationChanged += value; 
            }
            remove {
                base.LocationChanged -= value;
            } 
        }
 
        [ 
        Browsable(false),
        EditorBrowsable(EditorBrowsableState.Never), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden) 
        ]
        public override Size MinimumSize {
            get { return base.MinimumSize; }
            set { base.MinimumSize = value; } 
        }
 
 
        [
        Browsable(false), 
        EditorBrowsable(EditorBrowsableState.Never), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)
        ]
        public override Size MaximumSize {
            get { return base.MaximumSize; } 
            set { base.MaximumSize = value; }
        } 
 
        [
        EditorBrowsable(EditorBrowsableState.Never), 
        DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden),
        Browsable(false)
        ]
        public new string Name { 
            get {
                return base.Name; 
            } 
            set {
                base.Name = value; 
            }
        }

 
        [
        Browsable(false), 
        EditorBrowsable(EditorBrowsableState.Never), 
        DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)
        ] 
        public new int TabIndex {
            get {
                return base.TabIndex;
            } 
            set {
                base.TabIndex = value; 
            } 
        }
 
        [Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]
        public new event EventHandler TabIndexChanged {
            add {
                base.TabIndexChanged += value; 
            }
            remove { 
                base.TabIndexChanged -= value; 
            }
        } 

        [
        DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden),
        Browsable(false), 
        EditorBrowsable(EditorBrowsableState.Never)
        ] 
        public new bool TabStop { 
            get {
                return base.TabStop; 
            }
            set {
                base.TabStop = value;
            } 
        }
 
        [Browsable(false), EditorBrowsable(EditorBrowsableState.Never)] 
        public new event EventHandler TabStopChanged {
            add { 
                base.TabStopChanged += value;
            }
            remove {
                base.TabStopChanged -= value; 
            }
        } 
 
        private ToolStripRendererSwitcher RendererSwitcher {
            get { 
                if (rendererSwitcher == null) {
                    rendererSwitcher = new ToolStripRendererSwitcher(this, ToolStripRenderMode.System);
                    HandleRendererChanged(this, EventArgs.Empty);
                    rendererSwitcher.RendererChanged += new EventHandler(HandleRendererChanged); 
                }
                return rendererSwitcher; 
            } 
        }
 

        [Browsable(false)]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
        [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly")] 
        public ToolStripRenderer Renderer {
            get { 
                return RendererSwitcher.Renderer; 
            }
            set { 
                RendererSwitcher.Renderer = value;
            }
        }
 

        ///  
        [ 
        SRDescription(SR.ToolStripRenderModeDescr),
        SRCategory(SR.CatAppearance), 
        ]
        public ToolStripRenderMode RenderMode {
            get {
                return RendererSwitcher.RenderMode; 
            }
            set { 
                RendererSwitcher.RenderMode = value; 
            }
        } 

        [SRCategory(SR.CatAppearance), SRDescription(SR.ToolStripRendererChanged)]
        [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly")]
        public event EventHandler RendererChanged { 
            add {
                Events.AddHandler(EventRendererChanged, value); 
            } 
            remove {
                Events.RemoveHandler(EventRendererChanged, value); 
            }
        }

        private void HandleRendererChanged(object sender, EventArgs e) { 
           OnRendererChanged(e);
        } 
 
        protected override void OnHandleCreated(EventArgs e) {
            base.OnHandleCreated(e); 
            if (!RecreatingHandle) {
                OnLoad(EventArgs.Empty);
            }
        } 

        [EditorBrowsable(EditorBrowsableState.Advanced)] 
        protected virtual void OnLoad(EventArgs e) { 
            // There is no good way to explain this event except to say
            // that it's just another name for OnControlCreated. 
            EventHandler handler = (EventHandler)Events[EventLoad];
            if (handler != null) handler(this,e);
        }
 
        [EditorBrowsable(EditorBrowsableState.Advanced)]
        protected override void OnPaintBackground(PaintEventArgs e) { 
            ToolStripContentPanelRenderEventArgs rea = new ToolStripContentPanelRenderEventArgs(e.Graphics, this); 

            Renderer.DrawToolStripContentPanelBackground(rea); 

            if (!rea.Handled) {
                base.OnPaintBackground(e);
            } 

        } 
 
        /// 
        [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly")] 
        protected virtual void OnRendererChanged(EventArgs e) {

           // we dont want to be greedy.... if we're using TSProfessionalRenderer go DBuf, else dont.
           if (Renderer is ToolStripProfessionalRenderer) { 
                state[stateLastDoubleBuffer] = this.DoubleBuffered;
                //this.DoubleBuffered = true; 
                SetStyle(ControlStyles.OptimizedDoubleBuffer, true); 
           }
           else { 
                // restore DBuf
                this.DoubleBuffered = state[stateLastDoubleBuffer];
           }
 
           Renderer.InitializeContentPanel(this);
 
           this.Invalidate(); 

           EventHandler handler = (EventHandler)Events[EventRendererChanged]; 
           if (handler != null)  handler(this,e);

        }
 
        private void ResetRenderMode() {
           this.RendererSwitcher.ResetRenderMode(); 
        } 

        private bool ShouldSerializeRenderMode() { 
           return this.RendererSwitcher.ShouldSerializeRenderMode();
        }
    }
} 


// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------------------------ 
// 
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// 
//----------------------------------------------------------------------------- 

 
namespace System.Windows.Forms { 
    using System.Diagnostics;
    using System; 
    using System.ComponentModel;
    using System.Drawing;
    using System.Collections.Specialized;
    using System.Runtime.InteropServices; 
    using System.Diagnostics.CodeAnalysis;
    using System.ComponentModel.Design; 
 
    [
    ComVisible(true), 
    ClassInterface(ClassInterfaceType.AutoDispatch),
    Designer("System.Windows.Forms.Design.ToolStripContentPanelDesigner, " + AssemblyRef.SystemDesign),
    DefaultEvent("Load"),
    Docking(DockingBehavior.Never), 
    InitializationEvent("Load"),
    ToolboxItem(false) 
    ] 
    public class ToolStripContentPanel : Panel {
        private ToolStripRendererSwitcher      rendererSwitcher         = null; 
        private BitVector32                    state                    = new BitVector32();
        private static readonly int stateLastDoubleBuffer             = BitVector32.CreateMask();

        private static readonly object EventRendererChanged          = new object(); 
        private static readonly object EventLoad                     = new object();
 
        public ToolStripContentPanel() { 

            // Consider: OptimizedDoubleBuffer 
            SetStyle(ControlStyles.ResizeRedraw | ControlStyles.SupportsTransparentBackColor, true);
        }

         ///  
         ///     Allows the control to optionally shrink when AutoSize is true.
         ///  
         [ 
         EditorBrowsable(EditorBrowsableState.Never),
         DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), 
         Browsable(false),
         Localizable(false)
         ]
         public override AutoSizeMode AutoSizeMode { 
            get {
                return AutoSizeMode.GrowOnly; 
            } 
            set {
            } 
         }

         [
         Browsable(false), 
         EditorBrowsable(EditorBrowsableState.Never), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)
         ] 
         public override AnchorStyles Anchor { 
             get {
                 return base.Anchor; 
             }
             set {
                 base.Anchor = value;
             } 
         }
 
         [ 
        Browsable(false),
        EditorBrowsable(EditorBrowsableState.Never) 
        ]
        public override bool AutoScroll {
            get { return base.AutoScroll; }
            set { base.AutoScroll = value; } 
        }
 
        [ 
        Browsable(false),
        EditorBrowsable(EditorBrowsableState.Never), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden) 
        ]
        public new Size AutoScrollMargin {
            get { return base.AutoScrollMargin; }
            set { base.AutoScrollMargin = value; } 
        }
 
        [ 
        Browsable(false),
        EditorBrowsable(EditorBrowsableState.Never), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden) 
        ]
        public new Size AutoScrollMinSize {
            get { return base.AutoScrollMinSize; }
            set { base.AutoScrollMinSize = value; } 
        }
 
        [ 
        Browsable(false),
        EditorBrowsable(EditorBrowsableState.Never), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden) 
        ]
        public override bool AutoSize {
            get { return base.AutoSize; }
            set { base.AutoSize = value; } 
        }
 
 
        public override Color BackColor {
            get { 
                return base.BackColor;
            }

            set { 

                // To support transparency on ToolStripContainer, we need this check 
                // to ensure that background color of the container reflects the 
                // ContentPanel
                if (this.ParentInternal is ToolStripContainer && value == Color.Transparent) { 
                   this.ParentInternal.BackColor = Color.Transparent;
                }
                base.BackColor = value;
            } 
        }
 
 
        [
        Browsable(false), 
        EditorBrowsable(EditorBrowsableState.Never), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)
        ]
        public new event EventHandler AutoSizeChanged{
            add { 
                base.AutoSizeChanged += value;
            } 
            remove { 
                base.AutoSizeChanged -= value;
            } 
        }

        [
        Browsable(false), 
        EditorBrowsable(EditorBrowsableState.Never), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)
        ] 
        public new bool CausesValidation { 
            get { return base.CausesValidation; }
            set { base.CausesValidation = value; } 
        }

        [Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]
        public new event EventHandler CausesValidationChanged { 
            add {
                base.CausesValidationChanged += value; 
            } 
            remove {
                base.CausesValidationChanged -= value; 
            }
        }

        [ 
        Browsable(false),
        EditorBrowsable(EditorBrowsableState.Never), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden) 
        ] 
        public override DockStyle Dock {
            get { 
                return base.Dock;
            }
            set {
                base.Dock=value; 
            }
        } 
        [ 
        Browsable(false),
        EditorBrowsable(EditorBrowsableState.Never), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden) 
        ]
        public new event EventHandler DockChanged {
           add {
                base.DockChanged += value; 
            }
            remove { 
                base.DockChanged -= value; 
            }
        } 

        [SRCategory(SR.CatBehavior), SRDescription(SR.ToolStripContentPanelOnLoadDescr)]
        public event EventHandler Load {
            add { 
                Events.AddHandler(EventLoad, value);
            } 
            remove { 
                Events.RemoveHandler(EventLoad, value);
            } 
        }

        [
        Browsable(false), 
        EditorBrowsable(EditorBrowsableState.Never), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)
        ] 
        public new Point Location { 
            get { return base.Location; }
            set { base.Location = value; } 
        }

        [
        Browsable(false), 
        EditorBrowsable(EditorBrowsableState.Never), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)
        ] 
        public new event EventHandler LocationChanged { 
           add {
                base.LocationChanged += value; 
            }
            remove {
                base.LocationChanged -= value;
            } 
        }
 
        [ 
        Browsable(false),
        EditorBrowsable(EditorBrowsableState.Never), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden) 
        ]
        public override Size MinimumSize {
            get { return base.MinimumSize; }
            set { base.MinimumSize = value; } 
        }
 
 
        [
        Browsable(false), 
        EditorBrowsable(EditorBrowsableState.Never), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)
        ]
        public override Size MaximumSize {
            get { return base.MaximumSize; } 
            set { base.MaximumSize = value; }
        } 
 
        [
        EditorBrowsable(EditorBrowsableState.Never), 
        DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden),
        Browsable(false)
        ]
        public new string Name { 
            get {
                return base.Name; 
            } 
            set {
                base.Name = value; 
            }
        }

 
        [
        Browsable(false), 
        EditorBrowsable(EditorBrowsableState.Never), 
        DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)
        ] 
        public new int TabIndex {
            get {
                return base.TabIndex;
            } 
            set {
                base.TabIndex = value; 
            } 
        }
 
        [Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]
        public new event EventHandler TabIndexChanged {
            add {
                base.TabIndexChanged += value; 
            }
            remove { 
                base.TabIndexChanged -= value; 
            }
        } 

        [
        DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden),
        Browsable(false), 
        EditorBrowsable(EditorBrowsableState.Never)
        ] 
        public new bool TabStop { 
            get {
                return base.TabStop; 
            }
            set {
                base.TabStop = value;
            } 
        }
 
        [Browsable(false), EditorBrowsable(EditorBrowsableState.Never)] 
        public new event EventHandler TabStopChanged {
            add { 
                base.TabStopChanged += value;
            }
            remove {
                base.TabStopChanged -= value; 
            }
        } 
 
        private ToolStripRendererSwitcher RendererSwitcher {
            get { 
                if (rendererSwitcher == null) {
                    rendererSwitcher = new ToolStripRendererSwitcher(this, ToolStripRenderMode.System);
                    HandleRendererChanged(this, EventArgs.Empty);
                    rendererSwitcher.RendererChanged += new EventHandler(HandleRendererChanged); 
                }
                return rendererSwitcher; 
            } 
        }
 

        [Browsable(false)]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
        [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly")] 
        public ToolStripRenderer Renderer {
            get { 
                return RendererSwitcher.Renderer; 
            }
            set { 
                RendererSwitcher.Renderer = value;
            }
        }
 

        ///  
        [ 
        SRDescription(SR.ToolStripRenderModeDescr),
        SRCategory(SR.CatAppearance), 
        ]
        public ToolStripRenderMode RenderMode {
            get {
                return RendererSwitcher.RenderMode; 
            }
            set { 
                RendererSwitcher.RenderMode = value; 
            }
        } 

        [SRCategory(SR.CatAppearance), SRDescription(SR.ToolStripRendererChanged)]
        [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly")]
        public event EventHandler RendererChanged { 
            add {
                Events.AddHandler(EventRendererChanged, value); 
            } 
            remove {
                Events.RemoveHandler(EventRendererChanged, value); 
            }
        }

        private void HandleRendererChanged(object sender, EventArgs e) { 
           OnRendererChanged(e);
        } 
 
        protected override void OnHandleCreated(EventArgs e) {
            base.OnHandleCreated(e); 
            if (!RecreatingHandle) {
                OnLoad(EventArgs.Empty);
            }
        } 

        [EditorBrowsable(EditorBrowsableState.Advanced)] 
        protected virtual void OnLoad(EventArgs e) { 
            // There is no good way to explain this event except to say
            // that it's just another name for OnControlCreated. 
            EventHandler handler = (EventHandler)Events[EventLoad];
            if (handler != null) handler(this,e);
        }
 
        [EditorBrowsable(EditorBrowsableState.Advanced)]
        protected override void OnPaintBackground(PaintEventArgs e) { 
            ToolStripContentPanelRenderEventArgs rea = new ToolStripContentPanelRenderEventArgs(e.Graphics, this); 

            Renderer.DrawToolStripContentPanelBackground(rea); 

            if (!rea.Handled) {
                base.OnPaintBackground(e);
            } 

        } 
 
        /// 
        [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly")] 
        protected virtual void OnRendererChanged(EventArgs e) {

           // we dont want to be greedy.... if we're using TSProfessionalRenderer go DBuf, else dont.
           if (Renderer is ToolStripProfessionalRenderer) { 
                state[stateLastDoubleBuffer] = this.DoubleBuffered;
                //this.DoubleBuffered = true; 
                SetStyle(ControlStyles.OptimizedDoubleBuffer, true); 
           }
           else { 
                // restore DBuf
                this.DoubleBuffered = state[stateLastDoubleBuffer];
           }
 
           Renderer.InitializeContentPanel(this);
 
           this.Invalidate(); 

           EventHandler handler = (EventHandler)Events[EventRendererChanged]; 
           if (handler != null)  handler(this,e);

        }
 
        private void ResetRenderMode() {
           this.RendererSwitcher.ResetRenderMode(); 
        } 

        private bool ShouldSerializeRenderMode() { 
           return this.RendererSwitcher.ShouldSerializeRenderMode();
        }
    }
} 


// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK