Share via


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

更新 : 2010 年 7 月

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

注意

実際に画面に表示されるダイアログ ボックスとメニュー コマンドは、アクティブな設定またはエディションによっては、ヘルプの説明と異なる場合があります。 設定を変更するには、[ツール] メニューの [設定のインポートとエクスポート] をクリックします。 詳細については、「設定の操作」を参照してください。

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

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

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

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

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

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

  4. Visual Basic を使用している場合は、ソリューション エクスプローラーの上部にある [すべてのファイルを表示] をクリックします。 CustomControl1.vb を展開し、コード エディターで CustomControl1.Designer.vb を開きます。

  5. C# を使用している場合は、コード エディターで CustomControl1.cs を開きます。

  6. Control から継承したクラス宣言を見つけます。

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

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

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

  9. コントロールに含めるカスタム メソッドやカスタム プロパティを実装します。

  10. コントロールの外観を変更する場合は、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).
    }
    
  11. 保存してコントロールの動作確認を行います。

参照

処理手順

方法 : コントロール クラスを継承する

方法 : UserControl クラスを継承する

方法 : Windows フォームのコントロールを作成する

Visual Basic での継承されたイベント ハンドラーのトラブルシューティング

チュートリアル : Visual Basic による Windows フォーム コントロールからの継承

チュートリアル : Visual C# による Windows フォーム コントロールからの継承

概念

さまざまなカスタム コントロール

履歴の変更

日付

履歴

理由

2010 年 7 月

Visual Studio 2010 用に更新。

カスタマー フィードバック