System.Windows.Forms.UserControl.GetPreferredSizeCore C# (CSharp) Method

GetPreferredSizeCore() private method

private GetPreferredSizeCore ( Size proposedSize ) : Size
proposedSize System.Drawing.Size
return System.Drawing.Size
		internal override Size GetPreferredSizeCore (Size proposedSize)
		{
			Size retsize = Size.Empty;

			// Add up the requested sizes for Docked controls
			foreach (Control child in Controls) {
				if (!child.is_visible)
					continue;
					
				if (child.Dock == DockStyle.Left || child.Dock == DockStyle.Right)
					retsize.Width += child.PreferredSize.Width;
				else if (child.Dock == DockStyle.Top || child.Dock == DockStyle.Bottom)
					retsize.Height += child.PreferredSize.Height;	
			}
			
			// See if any non-Docked control is positioned lower or more right than our size
			foreach (Control child in Controls) {
				if (!child.is_visible)
					continue;

				if (child.Dock != DockStyle.None)
					continue;
					
				// If its anchored to the bottom or right, that doesn't really count
				if ((child.Anchor & AnchorStyles.Bottom) == AnchorStyles.Bottom || (child.Anchor & AnchorStyles.Right) == AnchorStyles.Right)
					continue;
					
				retsize.Width = Math.Max (retsize.Width, child.Bounds.Right + child.Margin.Right);
				retsize.Height = Math.Max (retsize.Height, child.Bounds.Bottom + child.Margin.Bottom);
			}

			return retsize;
		}
	}