File: System\Windows\Forms\Design\Behavior\MiniLockedBorderGlyph.cs
Web Access
Project: src\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;
 
namespace System.Windows.Forms.Design.Behavior;
 
/// <summary>
///  The LockedBorderGlyph draws one side (depending on type) of a SelectionBorder in the 'Locked' mode.
///  The constructor will initialize and cache the pen and brush objects to avoid unnecessary recreations.
/// </summary>
internal class MiniLockedBorderGlyph : SelectionGlyphBase
{
    private SelectionBorderGlyphType _type;
 
    internal SelectionBorderGlyphType Type
    {
        get => _type;
        set => _type = value;
    }
 
    /// <summary>
    ///  This constructor extends from the standard SelectionGlyphBase constructor.
    ///  Note that a primarySelection flag is passed in - this will be used when determining the colors of the borders.
    /// </summary>
    internal MiniLockedBorderGlyph(Rectangle controlBounds, SelectionBorderGlyphType type, Behavior behavior)
        : base(behavior)
    {
        InitializeGlyph(controlBounds, type);
    }
 
    /// <summary>
    ///  Helper function that initializes the Glyph based on bounds, type, primary sel, and bordersize.
    /// </summary>
    private void InitializeGlyph(Rectangle controlBounds, SelectionBorderGlyphType type)
    {
        hitTestCursor = Cursors.Default; // always default cursor for locked
        rules = SelectionRules.None; // never change sel rules for locked
 
        int borderSize = 1;
        Type = type;
 
        // this will return the rect representing the bounds of the glyph
        bounds = DesignerUtils.GetBoundsForSelectionType(controlBounds, type, borderSize);
        hitBounds = bounds;
    }
 
    /// <summary>
    ///  Simple painting logic for locked Glyphs.
    /// </summary>
    public override void Paint(PaintEventArgs pe)
    {
        pe.Graphics.FillRectangle(new SolidBrush(SystemColors.ControlText), bounds);
    }
}