方法 : 既存の Windows フォーム コントロールから継承する

既存のコントロールの機能を拡張する場合は、継承によって既存のコントロールから派生したコントロールを作成できます。 既存のコントロールから継承すると、そのコントロールのすべての機能およびビジュアル プロパティが引き継がれます。 たとえば、Button から継承したコントロールを作成すると、新しいコントロールは標準の Button コントロールと同じ外観を持ち、同じように機能します。 その後で、カスタム メソッドやカスタム プロパティの実装によって、新しいコントロールの機能を拡張または変更できます。 コントロールの中には、継承したコントロールの OnPaint メソッドをオーバーライドして、外観を変更できるものもあります。

継承したコントロールを作成するには

  1. Visual Studio で新しい Windows フォーム アプリケーション プロジェクトを 作成します。

  2. [プロジェクト] メニューの [新しい項目の追加] をクリックします。

    [新しい項目の追加] ダイアログ ボックスが表示されます。

  3. [新しい項目の追加] ダイアログ ボックスの [カスタム コントロール] をダブルクリックします。

    新しいカスタム コントロールがプロジェクトに追加されます。

  4. 使用しているものに応じて次のようにします。

    • Visual Basic の場合は、ソリューション エクスプローラーの上部にある [すべてのファイルを表示] をクリックします。 CustomControl1.vb を展開し、コード エディターで CustomControl1.Designer.vb を開きます。
    • C# の場合は、コード エディターで CustomControl1.cs を開きます。
  5. Control から継承したクラス宣言を見つけます。

  6. 基底クラスを継承元のコントロールに変更します。

    たとえば、Button から継承する場合は、クラス宣言を次のように変更します。

    Partial Class CustomControl1
        Inherits System.Windows.Forms.Button
    
    public partial class CustomControl1 : System.Windows.Forms.Button
    
  7. Visual Basic を使用している場合は、CustomControl1.Designer.vb を保存して閉じます。 コード エディターで CustomControl1.vb を開きます。

  8. コントロールに組み込むカスタム メソッドやカスタム プロパティを実装します。

  9. コントロールの外観を変更する場合は、OnPaint メソッドをオーバーライドします。

    注意

    OnPaint をオーバーライドしても、すべてのコントロールの外観を変更できるわけではありません。 すべての描画が Windows によって行われるコントロール (TextBox など) は、OnPaint メソッドを呼び出さないため、カスタム コードを使用しません。 OnPaint メソッドを使用できるかどうかを確認するには、変更するコントロールのヘルプ ドキュメントを参照してください。 すべての Windows フォーム コントロールの一覧については、「Windows フォームで使用するコントロール」を参照してください。 コントロールにメンバー メソッドとして OnPaint がない場合、このメソッドをオーバーライドして外観を変更することはできません。 カスタム描画の詳細については、「コントロールのカスタム描画およびレンダリング」を参照してください。

    Protected Overrides Sub OnPaint(ByVal e As _
       System.Windows.Forms.PaintEventArgs)
       MyBase.OnPaint(e)
       ' Insert code to do custom painting.
       ' If you want to completely change the appearance of your control,
       ' do not call MyBase.OnPaint(e).
    End Sub
    
    protected override void OnPaint(PaintEventArgs pe)
    {
       base.OnPaint(pe);
       // Insert code to do custom painting.
       // If you want to completely change the appearance of your control,
       // do not call base.OnPaint(pe).
    }
    
  10. コントロールを保存して、動作確認を行います。

関連項目