| File: System\ComponentModel\Design\DesignerActionPanel.TextLine.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.Drawing; using System.Windows.Forms; namespace System.ComponentModel.Design; internal sealed partial class DesignerActionPanel { private class TextLine : Line { private readonly Label _label; private DesignerActionTextItem? _textItem; protected TextLine(IServiceProvider serviceProvider, DesignerActionPanel actionPanel) : base(serviceProvider, actionPanel) { actionPanel.FontChanged += OnParentControlFontChanged; _label = new Label { BackColor = Color.Transparent, ForeColor = ActionPanel.LabelForeColor, TextAlign = ContentAlignment.MiddleLeft, UseMnemonic = false, }; AddedControls.Add(_label); } public sealed override string FocusId => string.Empty; public sealed override void Focus() { Debug.Fail("Should never try to focus a TextLine"); } public override Size LayoutControls(int top, int width, bool measureOnly) { Size labelSize = _label.GetPreferredSize(new Size(int.MaxValue, int.MaxValue)); if (!measureOnly) { _label.Location = new Point(LineLeftMargin, top + LineVerticalPadding / 2); _label.Size = labelSize; } return labelSize + new Size(LineLeftMargin + LineRightMargin, LineVerticalPadding); } private void OnParentControlFontChanged(object? sender, EventArgs e) { if (_label.Font is not null) { _label.Font = GetFont(); } } protected virtual Font GetFont() { return ActionPanel.Font; } internal override void UpdateActionItem(LineInfo lineInfo, ToolTip toolTip, ref int currentTabIndex) { TextLineInfo textLineInfo = (TextLineInfo)lineInfo; _textItem = textLineInfo.Item; _label.Text = StripAmpersands(_textItem.DisplayName); _label.Font = GetFont(); _label.TabIndex = currentTabIndex++; toolTip.SetToolTip(_label, _textItem.Description); } public static StandardLineInfo CreateLineInfo(DesignerActionList list, DesignerActionTextItem item) => new TextLineInfo(list, item); protected class TextLineInfo(DesignerActionList list, DesignerActionTextItem item) : StandardLineInfo(list) { public override DesignerActionTextItem Item { get; } = item; public override Line CreateLine(IServiceProvider serviceProvider, DesignerActionPanel actionPanel) { return new TextLine(serviceProvider, actionPanel); } public override Type LineType => typeof(TextLine); } } }