| File: System\Windows\Forms\Design\Behavior\ControlBodyGlyph.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.Drawing; namespace System.Windows.Forms.Design.Behavior; /// <summary> /// This Glyph is placed on every control sized to the exact bounds of /// the control. /// </summary> [DebuggerDisplay("{GetType().Name, nq}:: Behavior={Behavior.GetType().Name, nq}, {_hitTestCursor}")] public class ControlBodyGlyph : ComponentGlyph { private Rectangle _bounds; // bounds of the related control private readonly Cursor? _hitTestCursor; // cursor used to hit test private readonly IComponent? _component; /// <summary> /// Standard Constructor. /// </summary> public ControlBodyGlyph( Rectangle bounds, Cursor? cursor, IComponent? relatedComponent, ControlDesigner designer) : base(relatedComponent, new ControlDesigner.TransparentBehavior(designer)) { _bounds = bounds; _hitTestCursor = cursor; _component = relatedComponent; } public ControlBodyGlyph(Rectangle bounds, Cursor? cursor, IComponent? relatedComponent, Behavior? behavior) : base(relatedComponent, behavior) { _bounds = bounds; _hitTestCursor = cursor; _component = relatedComponent; } /// <summary> /// The bounds of this glyph. /// </summary> public override Rectangle Bounds => _bounds; /// <summary> /// Simple hit test rule: if the point is contained within the bounds /// AND the component is Visible (controls on some tab pages may /// not be, for ex) then it is a positive hit test. /// </summary> public override Cursor? GetHitTest(Point p) { // non-controls are always visible here bool isVisible = _component is not Control control || control.Visible; if (isVisible && _bounds.Contains(p)) { return _hitTestCursor; } return null; } }