2 // ToolStripContentPanel.cs
4 // Permission is hereby granted, free of charge, to any person obtaining
5 // a copy of this software and associated documentation files (the
6 // "Software"), to deal in the Software without restriction, including
7 // without limitation the rights to use, copy, modify, merge, publish,
8 // distribute, sublicense, and/or sell copies of the Software, and to
9 // permit persons to whom the Software is furnished to do so, subject to
10 // the following conditions:
12 // The above copyright notice and this permission notice shall be
13 // included in all copies or substantial portions of the Software.
15 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 // Copyright (c) 2006 Jonathan Pobst
26 // Jonathan Pobst (monkey@jpobst.com)
31 using System.Runtime.InteropServices;
32 using System.Windows.Forms.Layout;
33 using System.ComponentModel;
35 namespace System.Windows.Forms
38 [ClassInterface(ClassInterfaceType.AutoDispatch)]
39 [DefaultEvent ("Load")]
41 [Docking (DockingBehavior.Never)]
42 [InitializationEvent ("Load")]
43 public class ToolStripContentPanel : Panel
45 private ToolStripRenderMode render_mode;
46 private ToolStripRenderer renderer;
48 #region Public Constructors
49 public ToolStripContentPanel () : base ()
52 this.render_mode = ToolStripRenderMode.ManagerRenderMode;
56 #region Public Properties
58 [EditorBrowsable (EditorBrowsableState.Never)]
59 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
60 public override AnchorStyles Anchor {
61 get { return base.Anchor; }
62 set { base.Anchor = value; }
66 [EditorBrowsable (EditorBrowsableState.Never)]
67 public override bool AutoScroll {
68 get { return base.AutoScroll; }
69 set { base.AutoScroll = value; }
73 [EditorBrowsable (EditorBrowsableState.Never)]
74 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
75 public new Size AutoScrollMargin {
76 get { return base.AutoScrollMargin; }
77 set { base.AutoScrollMargin = value; }
81 [EditorBrowsable (EditorBrowsableState.Never)]
82 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
83 public new Size AutoScrollMinSize {
84 get { return base.AutoScrollMinSize; }
85 set { base.AutoScrollMinSize = value; }
89 [EditorBrowsable (EditorBrowsableState.Never)]
90 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
91 public override bool AutoSize {
92 get { return base.AutoSize; }
93 set { base.AutoSize = value; }
96 public override Color BackColor {
97 get { return base.BackColor; }
98 set { base.BackColor = value;
100 if (this.Parent != null)
101 this.Parent.BackColor = value;
106 [EditorBrowsable (EditorBrowsableState.Never)]
107 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
108 public new bool CausesValidation {
109 get { return base.CausesValidation; }
110 set { base.CausesValidation = value; }
114 [EditorBrowsable (EditorBrowsableState.Never)]
115 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
116 public override DockStyle Dock {
117 get { return base.Dock; }
118 set { base.Dock = value; }
122 [EditorBrowsable (EditorBrowsableState.Never)]
123 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
124 public new Point Location {
125 get { return base.Location; }
126 set { base.Location = value; }
130 [EditorBrowsable (EditorBrowsableState.Never)]
131 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
132 public override Size MaximumSize {
133 get { return base.MaximumSize; }
134 set { base.MaximumSize = value; }
138 [EditorBrowsable (EditorBrowsableState.Never)]
139 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
140 public override Size MinimumSize {
141 get { return base.MinimumSize; }
142 set { base.MinimumSize = value; }
146 [EditorBrowsable (EditorBrowsableState.Never)]
147 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
148 public new string Name {
149 get { return base.Name; }
150 set { base.Name = value; }
154 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
155 public ToolStripRenderer Renderer {
157 if (this.render_mode == ToolStripRenderMode.ManagerRenderMode)
158 return ToolStripManager.Renderer;
160 return this.renderer;
163 this.renderer = value;
164 this.OnRendererChanged (EventArgs.Empty);
168 public ToolStripRenderMode RenderMode {
169 get { return this.render_mode; }
171 if (!Enum.IsDefined (typeof (ToolStripRenderMode), value))
172 throw new InvalidEnumArgumentException (string.Format ("Enum argument value '{0}' is not valid for ToolStripRenderMode", value));
174 if (value == ToolStripRenderMode.Custom && this.renderer == null)
175 throw new NotSupportedException ("Must set Renderer property before setting RenderMode to Custom");
176 if (value == ToolStripRenderMode.Professional || value == ToolStripRenderMode.System)
177 this.renderer = new ToolStripProfessionalRenderer ();
179 this.render_mode = value;
184 [EditorBrowsable (EditorBrowsableState.Never)]
185 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
186 public new int TabIndex {
187 get { return base.TabIndex; }
188 set { base.TabIndex = value; }
192 [EditorBrowsable (EditorBrowsableState.Never)]
193 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
194 public new bool TabStop {
195 get { return base.TabStop; }
196 set { base.TabStop = value; }
200 #region Protected Methods
201 protected override void OnHandleCreated (EventArgs e)
203 base.OnHandleCreated (e);
206 [EditorBrowsable (EditorBrowsableState.Advanced)]
207 protected virtual void OnLoad (EventArgs e)
209 EventHandler eh = (EventHandler)(Events [LoadEvent]);
214 [EditorBrowsable (EditorBrowsableState.Advanced)]
215 protected override void OnPaintBackground (PaintEventArgs pevent)
217 base.OnPaintBackground (pevent);
220 protected virtual void OnRendererChanged (EventArgs e)
222 EventHandler eh = (EventHandler)(Events [RendererChangedEvent]);
228 #region Public Events
229 static object LoadEvent = new object ();
230 static object RendererChangedEvent = new object ();
233 [EditorBrowsable (EditorBrowsableState.Never)]
234 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
235 public new event EventHandler AutoSizeChanged {
236 add { base.AutoSizeChanged += value; }
237 remove { base.AutoSizeChanged -= value; }
241 [EditorBrowsable (EditorBrowsableState.Never)]
242 public new event EventHandler CausesValidationChanged {
243 add { base.CausesValidationChanged += value; }
244 remove { base.CausesValidationChanged -= value; }
248 [EditorBrowsable (EditorBrowsableState.Never)]
249 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
250 public new event EventHandler DockChanged {
251 add { base.DockChanged += value; }
252 remove { base.DockChanged -= value; }
255 public event EventHandler Load {
256 add { Events.AddHandler (LoadEvent, value); }
257 remove { Events.RemoveHandler (LoadEvent, value); }
261 [EditorBrowsable (EditorBrowsableState.Never)]
262 [DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
263 public new event EventHandler LocationChanged {
264 add { base.LocationChanged += value; }
265 remove { base.LocationChanged -= value; }
268 public event EventHandler RendererChanged {
269 add { Events.AddHandler (RendererChangedEvent, value); }
270 remove { Events.RemoveHandler (RendererChangedEvent, value); }
274 [EditorBrowsable (EditorBrowsableState.Never)]
275 public new event EventHandler TabIndexChanged {
276 add { base.TabIndexChanged += value; }
277 remove { base.TabIndexChanged -= value; }
281 [EditorBrowsable (EditorBrowsableState.Never)]
282 public new event EventHandler TabStopChanged {
283 add { base.TabStopChanged += value; }
284 remove { base.TabStopChanged -= value; }