File: System\Windows\Forms\Design\TabPageDesigner.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.ComponentModel.Design;
using System.Drawing;
using System.Windows.Forms.Design.Behavior;
 
namespace System.Windows.Forms.Design;
 
internal class TabPageDesigner : PanelDesigner
{
    public override bool CanBeParentedTo(IDesigner parentDesigner) => (parentDesigner is not null && parentDesigner.Component is TabControl);
 
    public override SelectionRules SelectionRules
    {
        get
        {
            SelectionRules rules = base.SelectionRules;
            Control ctl = Control;
 
            if (ctl is not null && ctl.Parent is TabControl)
            {
                rules &= ~SelectionRules.AllSizeable;
            }
 
            return rules;
        }
    }
 
    internal void OnDragDropInternal(DragEventArgs de) => OnDragDrop(de);
 
    internal void OnDragEnterInternal(DragEventArgs de) => OnDragEnter(de);
 
    internal void OnDragLeaveInternal(EventArgs e) => OnDragLeave(e);
 
    internal void OnDragOverInternal(DragEventArgs e) => OnDragOver(e);
 
    internal void OnGiveFeedbackInternal(GiveFeedbackEventArgs e) => OnGiveFeedback(e);
 
    protected override ControlBodyGlyph GetControlGlyph(GlyphSelectionType selectionType)
    {
        // create a new body glyph with empty bounds. This will keep incorrect tab pages from stealing drag/drop messages
        // which are now handled by the TabControlDesigner get the right cursor for this component.
        OnSetCursor();
 
        Rectangle translatedBounds = Rectangle.Empty;
 
        // create our glyph, and set its cursor appropriately
        ControlBodyGlyph g = new(translatedBounds, Cursor.Current, Control, this);
 
        return g;
    }
}