X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mcs%2Fclass%2FManaged.Windows.Forms%2FSystem.Windows.Forms%2FPanel.cs;h=343925d61608d77f6b20e8c625d4bdd2b8d1e120;hb=a1e7e4ebf7737572e349c69fc0ae56bd28517891;hp=092470403acb673d4e6e1226149da888254aaddb;hpb=1fabd87b02f8d2e359150ed7a9e92613e60383bc;p=mono.git diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/Panel.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/Panel.cs index 092470403ac..343925d6160 100644 --- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/Panel.cs +++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/Panel.cs @@ -35,6 +35,9 @@ namespace System.Windows.Forms { [DefaultProperty("BorderStyle")] [DefaultEvent("Paint")] [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 () { @@ -45,6 +48,22 @@ namespace System.Windows.Forms { #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 { @@ -96,29 +115,71 @@ namespace System.Windows.Forms { #endregion // Public Instance Methods #region Protected Instance Methods - protected override void OnResize(EventArgs e) { - base.OnResize (e); + 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 } }