| File: System\Windows\Forms\Panels\TableLayoutPanel\TableLayoutStyle.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.Windows.Forms.Layout; namespace System.Windows.Forms; [TypeConverter(typeof(TableLayoutSettings.StyleConverter))] [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] public abstract class TableLayoutStyle { private IArrangedElement? _owner; private SizeType _sizeType = SizeType.AutoSize; private float _size; [DefaultValue(SizeType.AutoSize)] public SizeType SizeType { get { return _sizeType; } set { if (_sizeType != value) { _sizeType = value; if (Owner is not null) { LayoutTransaction.DoLayout(Owner, Owner, PropertyNames.Style); if (Owner is Control owner) { owner.Invalidate(); } } } } } internal float Size { get { return _size; } set { ArgumentOutOfRangeException.ThrowIfNegative(value); if (_size != value) { _size = value; if (Owner is not null) { LayoutTransaction.DoLayout(Owner, Owner, PropertyNames.Style); if (Owner is Control owner) { owner.Invalidate(); } } } } } private bool ShouldSerializeSize() { return SizeType != SizeType.AutoSize; } internal IArrangedElement? Owner { get { return _owner; } set { _owner = value; } } // set the size without doing a layout internal void SetSize(float size) { Debug.Assert(size >= 0); _size = size; } // Workaround for https://github.com/dotnet/runtime/issues/100786 [return: DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] internal Type GetTypeWithConstructor() => this.GetType(); }