次の方法で共有


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

更新 : 2007 年 11 月

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

使用例

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

' 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 フォーム プロジェクトが現在開かれている場合は、原則として、変更内容を反映するためにプロジェクトを再表示する必要があります。通常は、コンポーネントが含まれているデザイン ウィンドウをいったん閉じてから開き直す必要があります。

参照

処理手順

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

その他の技術情報

カスタム デザイナ