ControlDesigner 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
扩展 . 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 实现演示了处理 MouseEnter 和 MouseLeave 事件、从设计器代码绘制控件,以及使用接口的 IDesignerFilter 一部分在设计时为控件添加属性。 以下示例代码包含与设计器关联的设计器和示例用户控件。 若要生成此示例,请将示例编译为类库,向Windows 窗体项目添加对库的引用,将控件添加到工具箱,并将控件的实例添加到窗体。 指向控件时,将突出显示控件外围的内部轮廓,用于绘制轮廓的颜色对应于 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 行为。
可以使用
构造函数
| 名称 | 说明 |
|---|---|
| ControlDesigner() |
初始化 ControlDesigner 类的新实例。 |
字段
| 名称 | 说明 |
|---|---|
| accessibilityObj |
指定设计器的辅助功能对象。 |
| InvalidPoint |
属性
| 名称 | 说明 |
|---|---|
| AccessibilityObject |
AccessibleObject获取分配给控件的控件。 |
| ActionLists |
获取与设计器关联的组件支持的设计时操作列表。 (继承自 ComponentDesigner) |
| AssociatedComponents |
获取与设计器管理的组件关联的组件的集合。 |
| AutoResizeHandles |
获取或设置一个值,该值指示重设大小句柄分配是否取决于属性的值 AutoSize 。 |
| BehaviorService |
BehaviorService从设计环境获取。 |
| Component |
获取此设计器正在设计的组件。 (继承自 ComponentDesigner) |
| Control |
获取设计器正在设计的控件。 |
| EnableDragRect |
获取一个值,该值指示是否可以在此设计器组件上绘制拖动矩形。 |
| InheritanceAttribute |
InheritanceAttribute获取设计器。 |
| InheritanceAttribute |
获取一个属性,该特性指示关联组件的继承类型。 (继承自 ComponentDesigner) |
| Inherited |
获取一个值,该值指示是否继承此组件。 (继承自 ComponentDesigner) |
| ParentComponent |
获取 . 的 ControlDesigner父组件。 |
| ParticipatesWithSnapLines |
获取一个值, ControlDesigner 该值指示拖动操作期间是否允许对齐线对齐。 |
| SelectionRules |
获取指示组件移动功能的选择规则。 |
| SetTextualDefaultProperty |
扩展 . Control. 的设计模式行为。 (继承自 ComponentDesigner) |
| ShadowProperties |
获取替代用户设置的属性值的集合。 (继承自 ComponentDesigner) |
| SnapLines |
获取表示此控件的重要对齐点的对象列表 SnapLine 。 |
| Verbs |
获取与设计器关联的组件支持的设计时谓词。 (继承自 ComponentDesigner) |
方法
显式接口实现
| 名称 | 说明 |
|---|---|
| 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) |