| File: System\Windows\Forms\Layout\FlowLayout.VerticalElementProxy.cs | Web Access |
| Project: src\winforms\src\System.Windows.Forms\System.Windows.Forms.csproj (System.Windows.Forms) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System.Drawing; namespace System.Windows.Forms.Layout; internal partial class FlowLayout { /// <summary> /// VerticalElementProxy swaps Top/Left, Bottom/Right, and other properties /// so that the same code path used for horizontal flow can be applied to /// vertical flow. /// </summary> private class VerticalElementProxy : ElementProxy { public override AnchorStyles AnchorStyles { get { AnchorStyles anchorStyles = LayoutUtils.GetUnifiedAnchor(Element!); bool isStretch = (anchorStyles & LayoutUtils.HorizontalAnchorStyles) == LayoutUtils.HorizontalAnchorStyles; // whether the control stretches to fill in the whole space bool isLeft = (anchorStyles & AnchorStyles.Left) != 0; // whether the control anchors to left and does not stretch; bool isRight = (anchorStyles & AnchorStyles.Right) != 0; // whether the control anchors to right and does not stretch; if (isStretch) { return LayoutUtils.VerticalAnchorStyles; } if (isLeft) { return AnchorStyles.Top; } if (isRight) { return AnchorStyles.Bottom; } return AnchorStyles.None; } } public override Rectangle Bounds { set => base.Bounds = LayoutUtils.FlipRectangle(value); } public override Padding Margin => LayoutUtils.FlipPadding(base.Margin); public override Size MinimumSize => LayoutUtils.FlipSize(base.MinimumSize); public override Size SpecifiedSize => LayoutUtils.FlipSize(base.SpecifiedSize); public override Size GetPreferredSize(Size proposedSize) { return LayoutUtils.FlipSize(base.GetPreferredSize(LayoutUtils.FlipSize(proposedSize))); } } }