Поделиться через


ControlDesigner Класс

Определение

Расширяет поведение элемента управления Control в режиме разработки.

public ref class ControlDesigner : System::ComponentModel::Design::ComponentDesigner
public class ControlDesigner : System.ComponentModel.Design.ComponentDesigner
type ControlDesigner = class
    inherit ComponentDesigner
Public Class ControlDesigner
Inherits ComponentDesigner
Наследование
ControlDesigner
Производный

Примеры

В следующем примере ControlDesigner реализации демонстрируется обработка MouseEnter и MouseLeave события, рисование элемента управления из кода конструктора IDesignerFilter и использование части интерфейса для добавления свойства элемента управления во время разработки. Следующий пример кода содержит конструктор и пример пользовательского элемента управления, связанного с конструктором. Чтобы создать этот пример, скомпилируйте пример в библиотеку классов, добавьте ссылку на библиотеку в проект Windows Forms, добавьте элемент управления на панель элементов и добавьте экземпляр элемента управления в форму. При наведении указателя на элемент управления выделяется внутренний контур периметра элемента управления, а цвет, используемый для рисования контура, соответствует свойству OutlineColor , добавленного конструктором к свойствам, перечисленным для элемента управления.

Добавьте ссылку на сборку System.Design для компиляции примера кода.

using namespace System;
using namespace System::ComponentModel;
using namespace System::ComponentModel::Design;
using namespace System::Collections;
using namespace System::Drawing;
using namespace System::Windows::Forms;
using namespace System::Windows::Forms::Design;
using namespace System::Security::Permissions;

   public ref class TestControlDesigner: public System::Windows::Forms::Design::ControlDesigner
   {
   private:
      bool mouseover;
      Color lineColor;

   public:

      property Color OutlineColor 
      {
         Color get()
         {
            return lineColor;
         }

         void set( Color value )
         {
            lineColor = value;
         }

      }
      TestControlDesigner()
      {
         mouseover = false;
         lineColor = Color::White;
      }

   protected:
      virtual void OnMouseEnter() override
      {
         this->mouseover = true;
         this->Control->Refresh();
      }

      virtual void OnMouseLeave() override
      {
         this->mouseover = false;
         this->Control->Refresh();
      }

      virtual void OnPaintAdornments( System::Windows::Forms::PaintEventArgs^ pe ) override
      {
         if ( this->mouseover )
                  pe->Graphics->DrawRectangle( gcnew Pen( gcnew SolidBrush( this->lineColor ),6 ), 0, 0, this->Control->Size.Width, this->Control->Size.Height );
      }

   protected:
      [ReflectionPermission(SecurityAction::Demand, Flags=ReflectionPermissionFlag::MemberAccess)]
      virtual void PreFilterProperties( System::Collections::IDictionary^ properties ) override
      {
         properties->Add( "OutlineColor", TypeDescriptor::CreateProperty( TestControlDesigner::typeid, "OutlineColor", System::Drawing::Color::typeid, nullptr ) );
      }
   };

   [DesignerAttribute(TestControlDesigner::typeid)]
   public ref class TestControl: public System::Windows::Forms::UserControl
   {
   private:
      System::ComponentModel::Container^ components;

   public:
      TestControl()
      {
         components = gcnew System::ComponentModel::Container;
      }

   protected:
      ~TestControl()
      {
         if ( components != nullptr )
         {
            delete components;
         }
      }
   };
using System;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Collections;
using System.Drawing;
using System.Windows.Forms;
using System.Windows.Forms.Design;

namespace ControlDesignerExample
{
    // ExampleControlDesigner is an example control designer that 
    // demonstrates basic functions of a ControlDesigner. 
    public class ExampleControlDesigner  : System.Windows.Forms.Design.ControlDesigner
    {
        // This Boolean state reflects whether the mouse is over the control.
        private bool mouseover = false;
        // This color is a private field for the OutlineColor property.
        private Color lineColor = Color.White;

        // This color is used to outline the control when the mouse is 
        // over the control.
        public Color OutlineColor
        {
            get
            {
                return lineColor;
            }
            set
            {
                lineColor = value;
            }
        }

        public ExampleControlDesigner()
        {
        }

        // Sets a value and refreshes the control's display when the 
        // mouse position enters the area of the control.
        protected override void OnMouseEnter()
        {
            this.mouseover = true;
            this.Control.Refresh();
        }    

        // Sets a value and refreshes the control's display when the 
        // mouse position enters the area of the control.        
        protected override void OnMouseLeave()
        {
            this.mouseover = false;            
            this.Control.Refresh();
        }        
        
        // Draws an outline around the control when the mouse is 
        // over the control.    
        protected override void OnPaintAdornments(System.Windows.Forms.PaintEventArgs pe)
        {
            if (this.mouseover)
            {
                pe.Graphics.DrawRectangle(
                    new Pen(new SolidBrush(this.lineColor), 6), 
                    0, 
                    0, 
                    this.Control.Size.Width, 
                    this.Control.Size.Height);
            }
        }

        // Adds a property to this designer's control at design time 
        // that indicates the outline color to use. 
        // The DesignOnlyAttribute ensures that the OutlineColor
        // property is not serialized by the designer.
        protected override void PreFilterProperties(System.Collections.IDictionary properties)
        {
            PropertyDescriptor pd = TypeDescriptor.CreateProperty(
                typeof(ExampleControlDesigner), 
                "OutlineColor",
                typeof(System.Drawing.Color),
                new Attribute[] { new DesignOnlyAttribute(true) });

            properties.Add("OutlineColor", pd);
        }
    }

    // This example control demonstrates the ExampleControlDesigner.
    [DesignerAttribute(typeof(ExampleControlDesigner))]
    public class ExampleControl : System.Windows.Forms.UserControl
    {        
        private System.ComponentModel.Container components = null;

        public ExampleControl()
        {
            components = new System.ComponentModel.Container();
        }

        protected override void Dispose( bool disposing )
        {
            if( disposing )
            {
                if( components != null )
                components.Dispose();
            }
            base.Dispose( disposing );
        }
    }
}
Imports System.ComponentModel
Imports System.ComponentModel.Design
Imports System.Collections
Imports System.Drawing
Imports System.Windows.Forms
Imports System.Windows.Forms.Design

Namespace ControlDesignerExample
    _
    ' ExampleControlDesigner is an example control designer that 
    ' demonstrates basic functions of a ControlDesigner.
    <System.Security.Permissions.PermissionSetAttribute(System.Security.Permissions.SecurityAction.Demand, Name:="FullTrust")> _
    Public Class ExampleControlDesigner
        Inherits System.Windows.Forms.Design.ControlDesigner

        ' This boolean state reflects whether the mouse is over the control.
        Private mouseover As Boolean = False
        ' This color is a private field for the OutlineColor property.
        Private lineColor As Color = Color.White

        ' This color is used to outline the control when the mouse is 
        ' over the control.
        Public Property OutlineColor() As Color
            Get
                Return lineColor
            End Get
            Set(ByVal Value As Color)
                lineColor = Value
            End Set
        End Property

        Public Sub New()
        End Sub

        ' Sets a value and refreshes the control's display when the 
        ' mouse position enters the area of the control.
        Protected Overrides Sub OnMouseEnter()
            Me.mouseover = True
            Me.Control.Refresh()
        End Sub

        ' Sets a value and refreshes the control's display when the 
        ' mouse position enters the area of the control.		
        Protected Overrides Sub OnMouseLeave()
            Me.mouseover = False
            Me.Control.Refresh()
        End Sub

        ' Draws an outline around the control when the mouse is 
        ' over the control.	
        Protected Overrides Sub OnPaintAdornments(ByVal pe As System.Windows.Forms.PaintEventArgs)
            If Me.mouseover Then
                pe.Graphics.DrawRectangle(New Pen(New SolidBrush(Me.lineColor), 6), 0, 0, Me.Control.Size.Width, Me.Control.Size.Height)
            End If
        End Sub

        ' Adds a property to this designer's control at design time 
        ' that indicates the outline color to use.
        ' The DesignOnlyAttribute ensures that the OutlineColor
        ' property is not serialized by the designer.
        Protected Overrides Sub PreFilterProperties(ByVal properties As System.Collections.IDictionary)
            Dim pd As PropertyDescriptor = TypeDescriptor.CreateProperty( _
            GetType(ExampleControlDesigner), _
            "OutlineColor", _
            GetType(System.Drawing.Color), _
            New Attribute() {New DesignOnlyAttribute(True)})

            properties.Add("OutlineColor", pd)
        End Sub
    End Class

    ' This example control demonstrates the ExampleControlDesigner.
    <DesignerAttribute(GetType(ExampleControlDesigner))> _
     Public Class ExampleControl
        Inherits System.Windows.Forms.UserControl
        Private components As System.ComponentModel.Container = Nothing

        Public Sub New()
            components = New System.ComponentModel.Container()
        End Sub

        Protected Overloads Sub Dispose(ByVal disposing As Boolean)
            If disposing Then
                If (components IsNot Nothing) Then
                    components.Dispose()
                End If
            End If
            MyBase.Dispose(disposing)
        End Sub
    End Class

End Namespace

Комментарии

ControlDesigner предоставляет базовый класс для конструкторов компонентов, производных от Control. Помимо методов и функций, унаследованных от ComponentDesigner класса , ControlDesigner предоставляет дополнительные методы для поддержки расширения и изменения поведения связанного Control объекта во время разработки.

Конструктор можно связать с типом с помощью DesignerAttribute. Общие сведения о настройке поведения во время разработки см. в разделе Расширение поддержки Design-Time.

Конструкторы

ControlDesigner()

Инициализирует новый экземпляр класса ControlDesigner.

Поля

accessibilityObj

Задает доступный объект для конструктора.

InvalidPoint

Определяет локальную точку Point, представляющую значения недопустимой точки Point.

Свойства

AccessibilityObject

Получает объект AccessibleObject, назначенный элементу управления.

ActionLists

Возвращает списки действий времени разработки, поддерживаемые компонентом, сопоставленным конструктору.

(Унаследовано от ComponentDesigner)
AssociatedComponents

Получает коллекцию компонентов, сопоставленных компоненту, который управляется конструктором.

AutoResizeHandles

Получает или задает значение, указывающее, зависит ли распределение дескрипторов изменения размера от значения свойства AutoSize.

BehaviorService

Получает BehaviorService из среды разработки.

Component

Возвращает основной компонент, создаваемый данным конструктором.

(Унаследовано от ComponentDesigner)
Control

Получает элемент управления, создаваемый данным конструктором.

EnableDragRect

Получает значение, указывающее, могут ли быть нарисованы перетаскиваемые прямоугольники на данном компоненте конструктора.

InheritanceAttribute

Получает InheritanceAttribute конструктора.

InheritanceAttribute

Возвращает атрибут, обозначающий тип наследования связанного компонента.

(Унаследовано от ComponentDesigner)
Inherited

Возвращает значение, определяющее, наследуется ли этот компонент или нет.

(Унаследовано от ComponentDesigner)
ParentComponent

Получает родительский компонент для ControlDesigner.

ParentComponent

Возвращает родительский компонент этого конструктора.

(Унаследовано от ComponentDesigner)
ParticipatesWithSnapLines

Получает значение, указывающее, разрешит ли ControlDesigner выравнивание по линии привязки во время операции перетаскивания.

SelectionRules

Получает правила выбора, указывающие на возможность перемещения компонентов.

SetTextualDefaultProperty

Расширяет поведение элемента управления Control в режиме разработки.

(Унаследовано от ComponentDesigner)
ShadowProperties

Возвращает коллекцию значений свойств, переопределяющих параметры пользователя.

(Унаследовано от ComponentDesigner)
SnapLines

Получает список объектов SnapLine, представляющих важные точки выравнивания для этого элемента управления.

Verbs

Возвращает команды в режиме конструктора, поддерживаемые компонентом, связанным с конструктором.

(Унаследовано от ComponentDesigner)

Методы

BaseWndProc(Message)

Обрабатывает сообщения Windows.

CanBeParentedTo(IDesigner)

Указывает, может ли этот элемент управления конструктора быть порожденным элементом управления заданного конструктора.

DefWndProc(Message)

Предоставляет стандартную обработку сообщений Windows.

DisplayError(Exception)

Отображает для пользователя информацию об указанном исключении.

Dispose()

Освобождает все ресурсы, занятые модулем ComponentDesigner.

(Унаследовано от ComponentDesigner)
Dispose(Boolean)

Освобождает неуправляемые ресурсы, используемые объектом ControlDesigner, а при необходимости освобождает также управляемые ресурсы.

DoDefaultAction()

Создает в файле с исходным кодом подпись метода для события по умолчанию для компонента и устанавливает курсор в позицию, где была создана эта подпись.

(Унаследовано от ComponentDesigner)
EnableDesignMode(Control, String)

Разрешает функцию разработки для дочернего элемента управления.

EnableDragDrop(Boolean)

Разрешает или запрещает поддержку операций перетаскивания для проектируемого элемента управления.

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
GetControlGlyph(GlyphSelectionType)

Возвращает ControlBodyGlyph, представляющий границы данного элемента управления.

GetGlyphs(GlyphSelectionType)

Получает коллекцию объектов Glyph, представляющих границы выделения и токены захвата для стандартного элемента управления.

GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetHitTest(Point)

Указывает, должно ли нажатие клавиши мыши в определенной точке обрабатываться элементом управления.

GetService(Type)

Пытается извлечь службу заданного типа с узла режима разработки компонента конструктора.

(Унаследовано от ComponentDesigner)
GetType()

Возвращает объект Type для текущего экземпляра.

(Унаследовано от Object)
HookChildControls(Control)

Рассылает сообщения от дочерних элементов управления заданного элемента управления в конструктор.

Initialize(IComponent)

Инициализирует конструктор, используя заданный компонент.

InitializeExistingComponent(IDictionary)

Повторно инициализирует существующий компонент.

InitializeExistingComponent(IDictionary)

Выполняет повторную инициализацию существующего компонента.

(Унаследовано от ComponentDesigner)
InitializeNewComponent(IDictionary)

Инициализирует только что созданный компонент.

InitializeNewComponent(IDictionary)

Инициализирует только что созданный компонент.

(Унаследовано от ComponentDesigner)
InitializeNonDefault()

Инициализирует свойства элемента управления с любыми значениями, не являющимися значениями по умолчанию.

InitializeNonDefault()
Устаревшие..
Устаревшие..

Инициализирует параметры импортированного компонента, параметры которого уже были инициализированы с использованием параметров, отличных от заданных по умолчанию.

(Унаследовано от ComponentDesigner)
InternalControlDesigner(Int32)

Возвращает конструктор внутреннего элемента управления с заданным индексом в ControlDesigner.

InvokeGetInheritanceAttribute(ComponentDesigner)

Возвращает атрибут InheritanceAttribute заданного объекта ComponentDesigner.

(Унаследовано от ComponentDesigner)
MemberwiseClone()

Создает неполную копию текущего объекта Object.

(Унаследовано от Object)
NumberOfInternalControlDesigners()

Возвращает число конструкторов внутреннего элемента управления в ControlDesigner.

OnContextMenu(Int32, Int32)

Показывает контекстное меню и предоставляет возможность осуществить дополнительную обработку, когда контекстное меню отображается.

OnCreateHandle()

Предоставляет возможность осуществления дополнительной обработки немедленно после создания дескриптора элемента управления.

OnDragComplete(DragEventArgs)

Получает вызов для очистки операции перетаскивания.

OnDragDrop(DragEventArgs)

Получает вызов, когда перетаскиваемый объект перемещается на представление конструктора элемента управления.

OnDragEnter(DragEventArgs)

Получает вызов, когда операция перетаскивания входит на представление конструктора элемента управления.

OnDragLeave(EventArgs)

Получает вызов, когда операция перетаскивания выходит за пределы представления конструктора элемента управления.

OnDragOver(DragEventArgs)

Получает вызов, когда перетаскиваемый объект перемещается по представлению конструктора элемента управления.

OnGiveFeedback(GiveFeedbackEventArgs)

Получает вызов во время выполнения операции перетаскивания для обеспечения визуального слежения за положением мыши при операции перетаскивания.

OnMouseDragBegin(Int32, Int32)

Получает вызов в ответ на нажатие и удерживание левой кнопки мыши над компонентом.

OnMouseDragEnd(Boolean)

Вызывается в конце операции перетаскивания для завершения или отмены операции.

OnMouseDragMove(Int32, Int32)

Получает вызов для каждого движения мыши во время операции перетаскивания.

OnMouseEnter()

Получает вызов, когда указатель мыши в первый раз оказывается на элементе управления.

OnMouseHover()

Получает вызов после наведения указателя мыши на элемент управления.

OnMouseLeave()

Получает вызов, когда указатель мыши в первый раз оказывается на элементе управления.

OnPaintAdornments(PaintEventArgs)

Получает вызов, когда элемент управления, управляемый конструктором, украсил свою поверхность, так что конструктор имеет возможность дополнительного украшения верхней части элемента управления.

OnSetComponentDefaults()
Устаревшие..
Устаревшие..

Вызывается при инициализации конструктора.

OnSetCursor()

Получает вызов каждый раз, когда необходимо установить курсор.

PostFilterAttributes(IDictionary)

Позволяет конструктору изменять или удалять элементы из набора атрибутов, предоставленных через класс TypeDescriptor.

(Унаследовано от ComponentDesigner)
PostFilterEvents(IDictionary)

Позволяет конструктору изменять или удалять элементы из набора событий, предоставленных через класс TypeDescriptor.

(Унаследовано от ComponentDesigner)
PostFilterProperties(IDictionary)

Позволяет конструктору изменять или удалять элементы из набора свойств, предоставленных с использованием класса TypeDescriptor.

(Унаследовано от ComponentDesigner)
PreFilterAttributes(IDictionary)

Позволяет конструктору добавлять элементы к набору атрибутов, предоставленному с использованием класса TypeDescriptor.

(Унаследовано от ComponentDesigner)
PreFilterEvents(IDictionary)

Позволяет конструктору добавлять элементы к набору событий, предоставленных с использованием класса TypeDescriptor.

(Унаследовано от ComponentDesigner)
PreFilterProperties(IDictionary)

Настраивает набор свойств, предоставляемых компонентом через TypeDescriptor.

RaiseComponentChanged(MemberDescriptor, Object, Object)

Уведомляет службу IComponentChangeService о том, что данный компонент был изменен.

(Унаследовано от ComponentDesigner)
RaiseComponentChanging(MemberDescriptor)

Уведомляет службу IComponentChangeService о том, что компонент будет изменен.

(Унаследовано от ComponentDesigner)
ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)
UnhookChildControls(Control)

Рассылает сообщения для дочерних элементов заданного элемента управления к каждому элементу управления, а не к родительскому конструктору.

WndProc(Message)

Обрабатывает сообщения Windows и дополнительно пересылает их в элемент управления.

Явные реализации интерфейса

IDesignerFilter.PostFilterAttributes(IDictionary)

Описание этого элемента содержится в методе PostFilterAttributes(IDictionary).

(Унаследовано от ComponentDesigner)
IDesignerFilter.PostFilterEvents(IDictionary)

Описание этого элемента содержится в методе PostFilterEvents(IDictionary).

(Унаследовано от ComponentDesigner)
IDesignerFilter.PostFilterProperties(IDictionary)

Описание этого элемента содержится в методе PostFilterProperties(IDictionary).

(Унаследовано от ComponentDesigner)
IDesignerFilter.PreFilterAttributes(IDictionary)

Описание этого элемента содержится в методе PreFilterAttributes(IDictionary).

(Унаследовано от ComponentDesigner)
IDesignerFilter.PreFilterEvents(IDictionary)

Описание этого элемента содержится в методе PreFilterEvents(IDictionary).

(Унаследовано от ComponentDesigner)
IDesignerFilter.PreFilterProperties(IDictionary)

Описание этого элемента содержится в методе PreFilterProperties(IDictionary).

(Унаследовано от ComponentDesigner)
ITreeDesigner.Children

Описание этого элемента см. в свойстве Children.

(Унаследовано от ComponentDesigner)
ITreeDesigner.Parent

Описание этого элемента см. в свойстве Parent.

(Унаследовано от ComponentDesigner)

Применяется к

См. также раздел