| File: System\Windows\Forms\Design\SplitContainerDesigner.OrientationActionList.cs | Web Access |
| Project: src\winforms\src\System.Windows.Forms.Design\src\System.Windows.Forms.Design.csproj (System.Windows.Forms.Design) |
// 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.ComponentModel.Design; namespace System.Windows.Forms.Design; internal partial class SplitContainerDesigner { /// <summary> /// This class is used to provide the horizontal or vertical splitter orientation action items. /// </summary> private class OrientationActionList : DesignerActionList { private string? _actionName; private readonly SplitContainerDesigner _owner; private readonly Component? _ownerComponent; public OrientationActionList(SplitContainerDesigner owner) : base(owner.Component) { _owner = owner; _ownerComponent = owner.Component as Component; if (_ownerComponent is not null) { PropertyDescriptor? orientationProp = TypeDescriptor.GetProperties(_ownerComponent)["Orientation"]; if (orientationProp is not null) { bool needsVertical = ((Orientation)orientationProp.GetValue(_ownerComponent)!) == Orientation.Horizontal; _actionName = needsVertical ? SR.DesignerShortcutVerticalOrientation : SR.DesignerShortcutHorizontalOrientation; } } } private void OnOrientationActionClick(object? sender, EventArgs e) { if (sender is not DesignerVerb verb) { return; } Orientation orientation = verb.Text.Equals(SR.DesignerShortcutHorizontalOrientation) ? Orientation.Horizontal : Orientation.Vertical; // switch the text of the orientation action from vertical to horizontal or visa-versa _actionName = (orientation == Orientation.Horizontal) ? SR.DesignerShortcutVerticalOrientation : SR.DesignerShortcutHorizontalOrientation; // get the prop and actually modify the orientation PropertyDescriptor? orientationProp = TypeDescriptor.GetProperties(_ownerComponent!)["Orientation"]; if (orientationProp is not null && ((Orientation)orientationProp.GetValue(_ownerComponent)!) != orientation) { orientationProp.SetValue(_ownerComponent, orientation); } DesignerActionUIService actionUIService = _owner.GetRequiredService<DesignerActionUIService>(); actionUIService.Refresh(_ownerComponent); } public override DesignerActionItemCollection GetSortedActionItems() => [ new DesignerActionVerbItem(new DesignerVerb(_actionName!, OnOrientationActionClick)) ]; } }