次の方法で共有


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

更新 : 2007 年 11 月

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

7h62478z.alert_note(ja-jp,VS.90).gifメモ :

使用している設定またはエディションによっては、表示されるダイアログ ボックスやメニュー コマンドがヘルプに記載されている内容と異なる場合があります。設定を変更するには、[ツール] メニューの [設定のインポートとエクスポート] をクリックします。詳細については、「Visual Studio の設定」を参照してください。

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

  1. 新しい Windows プロジェクトを作成します。

    このプロジェクトは、Windows アプリケーション プロジェクトや Windows コントロール ライブラリ プロジェクトなど、どの種類のプロジェクトでもかまいません。Windows コントロール ライブラリ プロジェクトを選択する場合は、用意されている空白のコントロールを使用して、手順 2. と 3. を省略することもできます。

  2. [プロジェクト] メニューの [ユーザー コントロールの追加] をクリックします。

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

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

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

  4. コード エディタで、継承する基本クラスとして Control を指定する行を見つけます。基本クラスの名前を継承元のコントロールの名前に変更します。

    たとえば、Button から継承する場合は、次のようになります。

    Inherits System.Windows.Forms.Button
    
    public class CustomControl1 : System.Windows.Forms.Button
    
    public class CustomControl1
       extends System.Windows.Forms.Button
    
  5. コントロールに含めるカスタム メソッドやカスタム プロパティを実装します。

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

    7h62478z.alert_note(ja-jp,VS.90).gifメモ :

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

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

参照

処理手順

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

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

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

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

概念

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