次の方法で共有


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

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

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

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

  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. コントロールを保存してテストします。

関連項目