| File: System\Windows\Forms\Layout\IArrangedElement.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.ComponentModel; using System.Drawing; namespace System.Windows.Forms.Layout; internal interface IArrangedElement : IComponent { /// <summary> /// Bounding rectangle of the element. /// </summary> Rectangle Bounds { get; } /// <summary> /// Sets the bounds for an element. Implementors should call /// CommonProperties.SetSpecifiedBounds. /// See Control.SetBoundsCore. /// </summary> void SetBounds(Rectangle bounds, BoundsSpecified specified); /// <summary> /// Query element for its preferred size. There is no guarantee /// that layout engine will assign the element the returned size. /// ProposedSize is a hint about constraints. /// </summary> Size GetPreferredSize(Size proposedSize); /// <summary> /// DisplayRectangle is the client area of a container element. /// Could possibly disappear if we change control to keep an /// up-to-date copy of display rectangle in the property store. /// </summary> Rectangle DisplayRectangle { get; } /// <summary> /// True if the element is currently visible (some layouts, like /// flow, need to skip non-visible elements.) /// </summary> bool ParticipatesInLayout { get; } /// <summary> /// Internally, layout engines will get properties from the /// property store on this interface. In Orcas, this will be /// replaced with a global PropertyManager for DPs. /// </summary> PropertyStore Properties { get; } /// <summary> /// When an extender provided property is changed, we call this /// method to update the layout on the element. In Orcas, we /// will sync the DPs changed event. /// </summary> void PerformLayout(IArrangedElement affectedElement, string? propertyName); /// <summary> /// Returns the element's parent container (on a control, this forwards to Parent) /// </summary> IArrangedElement? Container { get; } /// <summary> /// Returns the element's children (on a control, this forwards to Controls) /// </summary> ArrangedElementCollection Children { get; } }