| File: System\Windows\Forms\Layout\TableLayout.LayoutInfo.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. namespace System.Windows.Forms.Layout; internal partial class TableLayout { /// <summary> /// This class contains layout related information pertaining to a child control of the /// container being laid out. It contains Row,column assignments as well as RowSpan/ColumnSpan. /// This class is used from ContainerInfo as a way of caching information about child controls. /// </summary> internal sealed class LayoutInfo { public LayoutInfo(IArrangedElement element) { Element = element; } public bool IsAbsolutelyPositioned => RowPosition >= 0 && ColumnPosition >= 0; public IArrangedElement Element { get; } /// <summary> /// Corresponds to TableLayoutSettings.SetRow. Can be -1 indicating that it is a /// "flow" element and will fit in as necessary. This occurs when a control is /// just added without specific position. /// </summary> public int RowPosition { get; set; } = -1; /// <summary> /// Corresponds to TableLayoutSettings.SetColumn. Can be -1 indicating that it is a /// "flow" element and will fit in as necessary. This occurs when a control is /// just added without specific position. /// </summary> public int ColumnPosition { get; set; } = -1; public int RowStart { get; set; } = -1; public int ColumnStart { get; set; } = -1; public int ColumnSpan { get; set; } = 1; public int RowSpan { get; set; } = 1; #if DEBUG public LayoutInfo Clone() => new(Element) { RowStart = RowStart, ColumnStart = ColumnStart, RowSpan = RowSpan, ColumnSpan = ColumnSpan, RowPosition = RowPosition, ColumnPosition = ColumnPosition }; public override bool Equals(object? obj) => obj is LayoutInfo other && other.RowStart == RowStart && other.ColumnStart == ColumnStart && other.RowSpan == RowSpan && other.ColumnSpan == ColumnSpan && other.RowPosition == RowPosition && other.ColumnPosition == ColumnPosition; public override int GetHashCode() { HashCode hash = default; hash.Add(RowStart); hash.Add(ColumnStart); hash.Add(RowSpan); hash.Add(ColumnSpan); hash.Add(RowPosition); hash.Add(ColumnPosition); return hash.ToHashCode(); } #endif } }