次の方法で共有


方法 : デザイン モードでコントロールのカスタム初期化を行う

カスタム デザイナーを使用すると、デザイン環境によって作成されるコンポーネントおよびコントロールを作成時に初期化できます。

使用例

デザイン環境による作成時にコントロールを初期化する方法を、次のコード例に示します。 この作成方法は、コントロールのインスタンスをフォームにドラッグしたときと、フォームのデザイナーを起動したときが該当します。 このコード例の完全な説明については、「方法 : デザイン モードでコントロールの外観と動作を拡張する」を参照してください。

' This demonstrates changing the appearance of a control while 
' it is being designed. In this case, the BackColor property is 
' set to LightBlue.  
Public Overrides Sub InitializeNewComponent( _
ByVal defaultValues As IDictionary)

    MyBase.InitializeNewComponent(defaultValues)

    Dim colorPropDesc As PropertyDescriptor = _
    TypeDescriptor.GetProperties(Component)("BackColor")

    If colorPropDesc IsNot Nothing AndAlso _
       colorPropDesc.PropertyType Is GetType(Color) AndAlso _
       Not colorPropDesc.IsReadOnly AndAlso _
       colorPropDesc.IsBrowsable Then
        colorPropDesc.SetValue(Component, Color.LightBlue)
    End If 
End Sub
// This demonstrates changing the appearance of a control while 
// it is being designed. In this case, the BackColor property is 
// set to LightBlue.  

public override void InitializeNewComponent(IDictionary defaultValues)
{
    base.InitializeNewComponent(defaultValues);

    PropertyDescriptor colorPropDesc = 
        TypeDescriptor.GetProperties(Component)["BackColor"];

    if (colorPropDesc != null &&
        colorPropDesc.PropertyType == typeof(Color) &&
        !colorPropDesc.IsReadOnly &&
        colorPropDesc.IsBrowsable)
    {
        colorPropDesc.SetValue(Component, Color.LightBlue);
    }
}

デザイン環境は、コントロールまたはコンポーネントのインスタンスを作成するときに、デザイナーの InitializeNewComponent メソッドを呼び出します。 前のコード例では、コントロールの BackColor プロパティが PropertyDescriptor を使用して設定されます。

コードのコンパイル

コンポーネントのデザイン時の側面に変更を加える場合は、コントロール プロジェクトをビルドし直す必要があります。 加えて、このコンポーネントを使用している別の Windows フォーム プロジェクトが現在開かれている場合は、多くの場合、変更内容を表示するのにプロジェクトを更新する必要があります。 通常は、コンポーネントが含まれているデザイン ウィンドウをいったん閉じてから開き直す必要があります。

注意

デザイン時アセンブリ System.Design.dll への参照を追加する必要があります。このアセンブリは、.NET Framework 4 Client Profile には含まれていません。System.Design.dll への参照を追加するには、プロジェクトのターゲット フレームワークを .NET Framework 4 に変更する必要があります。

参照

処理手順

方法 : デザイン モードでコントロールの外観と動作を拡張する

その他の技術情報

カスタム デザイナー