次の方法で共有


ControlDesigner クラス

Control のデザイン モードの動作を拡張する基本デザイナ クラス。

この型のすべてのメンバの一覧については、ControlDesigner メンバ を参照してください。

System.Object
   System.ComponentModel.Design.ComponentDesigner
      System.Windows.Forms.Design.ControlDesigner
         System.Windows.Forms.Design.ParentControlDesigner

Public Class ControlDesigner
   Inherits ComponentDesigner
[C#]
public class ControlDesigner : ComponentDesigner
[C++]
public __gc class ControlDesigner : public ComponentDesigner
[JScript]
public class ControlDesigner extends ComponentDesigner

スレッドセーフ

この型の public static (Visual Basicでは Shared) のすべてのメンバは、マルチスレッド操作で安全に使用できます。インスタンスのメンバの場合は、スレッドセーフであるとは限りません。

解説

ControlDesigner は、 Control から派生するコンポーネントのデザイナで使用する基本クラスを提供します。 ControlDesigner は、 ComponentDesigner クラスから継承したメソッドと機能の他に、デザイン時に関連する Control の動作を拡張および変更するための追加のメソッドを提供します。

DesignerAttribute を使用してデザイナに型を関連付けることができます。デザイン時の動作のカスタマイズの概要については、「 デザイン時サポートの拡張 」を参照してください。

使用例

[Visual Basic, C#, C++] MouseEnter イベントおよび MouseLeave イベントを処理し、デザイナ コードからコントロール上に描画し、 IDesignerFilter インターフェイスの一部を使用してデザイン時にコントロールのプロパティを追加する、 ControlDesigner 実装の例を次に示します。このサンプル コードには、デザイナおよびそのデザイナに関連付けられたサンプル ユーザー コントロールが含まれます。このサンプルをビルドするには、サンプルをコンパイルしてクラス ライブラリを作成し、このライブラリへの参照を Windows フォーム プロジェクトに追加します。次に、このコントロールをツールボックスに追加し、コントロールのインスタンスをフォームに追加します。このコントロールをポイントすると、コントロールを囲んでいる内側のアウトラインが強調表示されます。アウトラインには、デザイナがコントロールのプロパティのリストに追加した OutlineColor プロパティに対応した色が使用されます。

 
Imports System
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.
    Public Class TestControlDesigner
        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.
        Protected Overrides Sub PreFilterProperties(ByVal properties As System.Collections.IDictionary)
            properties.Add("OutlineColor", TypeDescriptor.CreateProperty(GetType(TestControlDesigner), "OutlineColor", GetType(System.Drawing.Color), Nothing))
        End Sub 
    End Class 

    ' This example control demonstrates the ExampleControlDesigner.
    <DesignerAttribute(GetType(TestControlDesigner))> _
     Public Class TestControl
        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 Not (components Is Nothing) Then
                    components.Dispose()
                End If
            End If
            MyBase.Dispose(disposing)
        End Sub 
    End Class 

End Namespace

[C#] 
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.
        protected override void PreFilterProperties(System.Collections.IDictionary properties)
        {
            properties.Add("OutlineColor", TypeDescriptor.CreateProperty(typeof(ExampleControlDesigner), "OutlineColor", typeof(System.Drawing.Color), null));
        }
    }

    // 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 );
        }
    }
}

[C++] 
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;

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

public:
    __property Color get_OutlineColor() {
        return lineColor;
    }

    __property void    set_OutlineColor(Color value) {
        lineColor = value;
    }

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

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

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

    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);        
    }

protected:
    void PreFilterProperties(System::Collections::IDictionary* properties) {
        properties->Add(S"OutlineColor", TypeDescriptor::CreateProperty(__typeof(TestControlDesigner),
            S"OutlineColor", __typeof(System::Drawing::Color), 0));
    }
};

[DesignerAttribute(__typeof(TestControlDesigner))]
public __gc class TestControl : public System::Windows::Forms::UserControl {        
private:
    System::ComponentModel::Container* components;

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

protected:
    void Dispose(Boolean disposing) {
        if (disposing && components)
        {
            components->Dispose();
        }
        UserControl::Dispose(disposing);
    }
};
}

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

名前空間: System.Windows.Forms.Design

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

アセンブリ: System.Design (System.Design.dll 内)

参照

ControlDesigner メンバ | System.Windows.Forms.Design 名前空間 | ComponentDesigner | IDesigner | デザイン時サポートの拡張 | DesignerAttribute