// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
-// Copyright (c) 2004 Novell, Inc.
+// Copyright (c) 2004-2005 Novell, Inc.
//
// Authors:
// Jackson Harper (jackson@ximian.com)
//
-// NOT COMPLETE
+// COMPLETE
using System;
using System.ComponentModel;
namespace System.Windows.Forms {
[DefaultProperty("BorderStyle")]
[DefaultEvent("Paint")]
- [Designer ("System.Windows.Forms.Design.PanelDesigner, " + Consts.AssemblySystem_Design, (string)null)]
+ [Designer ("System.Windows.Forms.Design.PanelDesigner, " + Consts.AssemblySystem_Design, "System.ComponentModel.Design.IDesigner")]
+ [Docking (DockingBehavior.Ask)]
+ [ClassInterface (ClassInterfaceType.AutoDispatch)]
+ [ComVisible (true)]
public class Panel : ScrollableControl {
#region Constructors & Destructors
public Panel () {
base.TabStop = false;
SetStyle(ControlStyles.Selectable, false);
+ SetStyle (ControlStyles.SupportsTransparentBackColor, true);
}
#endregion // Constructors & Destructors
#region Public Instance Properties
+ [Browsable (true)]
+ [EditorBrowsable (EditorBrowsableState.Always)]
+ [DesignerSerializationVisibility (DesignerSerializationVisibility.Visible)]
+ public override bool AutoSize {
+ get { return base.AutoSize; }
+ set { base.AutoSize = value; }
+ }
+
+ [Browsable (true)]
+ [DefaultValue (AutoSizeMode.GrowOnly)]
+ [Localizable (true)]
+ public virtual AutoSizeMode AutoSizeMode {
+ get { return base.GetAutoSizeMode (); }
+ set { base.SetAutoSizeMode (value); }
+ }
+
[DefaultValue(BorderStyle.None)]
[DispId(-504)]
public BorderStyle BorderStyle {
- get { return border_style; }
- set {
- if (value == border_style)
- return;
- border_style = value;
- Refresh ();
- }
+ get { return InternalBorderStyle; }
+ set { InternalBorderStyle = value; }
}
[DefaultValue(false)]
#endregion // Public Instance Methods
#region Protected Instance Methods
- protected override void OnResize(EventArgs e) {\r
- base.OnResize (e);\r
- Invalidate(true);\r
- }\r
+ protected override void OnResize(EventArgs eventargs) {
+ base.OnResize (eventargs);
+ Invalidate(true);
+ }
#endregion // Protected Instance Methods
#region Events
+ [Browsable (true)]
+ [EditorBrowsable (EditorBrowsableState.Always)]
+ public new event EventHandler AutoSizeChanged {
+ add { base.AutoSizeChanged += value; }
+ remove { base.AutoSizeChanged -= value; }
+ }
+
[Browsable(false)]
[EditorBrowsable(EditorBrowsableState.Never)]
- public event KeyEventHandler KeyDown;
+ public new event KeyEventHandler KeyDown {
+ add { base.KeyDown += value; }
+ remove { base.KeyDown -= value; }
+ }
[Browsable(false)]
[EditorBrowsable(EditorBrowsableState.Never)]
- public event KeyPressEventHandler KeyPress;
+ public new event KeyPressEventHandler KeyPress {
+ add { base.KeyPress += value; }
+ remove { base.KeyPress -= value; }
+ }
[Browsable(false)]
[EditorBrowsable(EditorBrowsableState.Never)]
- public event KeyEventHandler KeyUp;
+ public new event KeyEventHandler KeyUp {
+ add { base.KeyUp += value; }
+ remove { base.KeyUp -= value; }
+ }
[Browsable(false)]
[EditorBrowsable(EditorBrowsableState.Never)]
- public event EventHandler TextChanged;
+ public new event EventHandler TextChanged {
+ add { base.TextChanged += value; }
+ remove { base.TextChanged -= value; }
+ }
+ #endregion
+
+ #region Internal Methods
+ internal override Size GetPreferredSizeCore (Size proposedSize)
+ {
+ Size retsize = Size.Empty;
+
+ foreach (Control child in Controls) {
+ if (child.Dock == DockStyle.Fill) {
+ if (child.Bounds.Right > retsize.Width)
+ retsize.Width = child.Bounds.Right;
+ } else if (child.Dock != DockStyle.Top && child.Dock != DockStyle.Bottom && (child.Anchor & AnchorStyles.Right) == 0 && (child.Bounds.Right + child.Margin.Right) > retsize.Width)
+ retsize.Width = child.Bounds.Right + child.Margin.Right;
+
+ if (child.Dock == DockStyle.Fill) {
+ if (child.Bounds.Bottom > retsize.Height)
+ retsize.Height = child.Bounds.Bottom;
+ } else if (child.Dock != DockStyle.Left && child.Dock != DockStyle.Right && (child.Anchor & AnchorStyles.Bottom) == 0 && (child.Bounds.Bottom + child.Margin.Bottom) > retsize.Height)
+ retsize.Height = child.Bounds.Bottom + child.Margin.Bottom;
+ }
+
+ return retsize;
+ }
#endregion
}
}