方法 : 既存の Windows フォーム コントロールから継承するHow to: Inherit from Existing Windows Forms Controls

既存のコントロールの機能を拡張する場合は、継承によって既存のコントロールから派生したコントロールを作成できます。If you want to extend the functionality of an existing control, you can create a control derived from an existing control through inheritance. 既存のコントロールから継承すると、そのコントロールのすべての機能およびビジュアル プロパティが引き継がれます。When inheriting from an existing control, you inherit all of the functionality and visual properties of that control. たとえば、 からButton継承したコントロールを作成する場合、新しいコントロールは標準Buttonコントロールとまったく同じように表示され、動作します。For example, if you were creating a control that inherited from Button, your new control would look and act exactly like a standard Button control. その後で、カスタム メソッドやカスタム プロパティの実装によって、新しいコントロールの機能を拡張または変更できます。You could then extend or modify the functionality of your new control through the implementation of custom methods and properties. 一部のコントロールでは、OnPaint継承されたコントロールの外観を、そのメソッドをオーバーライドして変更することもできます。In some controls, you can also change the visual appearance of your inherited control by overriding its OnPaint method.

継承したコントロールを作成するにはTo create an inherited control

  1. Visual Studio で、新しいWindows フォーム アプリケーションプロジェクトを作成します。In Visual Studio, create a new Windows Forms Application project.

  2. [プロジェクト] メニューの [新しい項目の追加] をクリックします。From the Project menu, choose Add New Item.

    [新しい項目の追加] ダイアログ ボックスが表示されます。The Add New Item dialog box appears.

  3. [新しい項目の追加] ダイアログ ボックスの [カスタム コントロール] をダブルクリックします。In the Add New Item dialog box, double-click Custom Control.

    新しいカスタム コントロールがプロジェクトに追加されます。A new custom control is added to your project.

  4. 使用している場合:If you're using:

    • Visual Basic のソリューションエクスプローラの上部で、[すべてのファイルを表示] をクリックします。Visual Basic, at the top of Solution Explorer, click Show All Files. CustomControl1.vb を展開し、コード エディターで CustomControl1.Designer.vb を開きます。Expand CustomControl1.vb and then open CustomControl1.Designer.vb in the Code Editor.
    • C# を開く、コード エディターでCustomControl1.csを開きます。C#, open CustomControl1.cs in the Code Editor.
  5. からControl継承するクラス宣言を探します。Locate the class declaration, which inherits from Control.

  6. 基底クラスを継承元のコントロールに変更します。Change the base class to the control that you want to inherit from.

    たとえば、 をButton継承する場合は、クラス宣言を次のように変更します。For example, if you want to inherit from Button, change the class declaration to the following:

    Partial Class CustomControl1
        Inherits System.Windows.Forms.Button
    
    public partial class CustomControl1 : System.Windows.Forms.Button
    
  7. Visual Basic を使用している場合は、CustomControl1.Designer.vb を保存して閉じます。If you are using Visual Basic, save and close CustomControl1.Designer.vb. コード エディターで CustomControl1.vb を開きます。Open CustomControl1.vb in the Code Editor.

  8. コントロールに組み込むカスタム メソッドやカスタム プロパティを実装します。Implement any custom methods or properties that your control will incorporate.

  9. コントロールのグラフィカルな外観を変更する場合は、メソッドをオーバーライドOnPaintします。If you want to modify the graphical appearance of your control, override the OnPaint method.

    注意

    オーバーライドOnPaintしても、すべてのコントロールの外観を変更することはできません。Overriding OnPaint will not allow you to modify the appearance of all controls. Windows によってすべての描画を行っているコントロール ( など )TextBoxは、メソッドOnPaintを呼び出すことはないため、カスタム コードを使用することはありません。Those controls that have all of their painting done by Windows (for example, TextBox) never call their OnPaint method, and thus will never use the custom code. 変更する特定のコントロールのヘルプ ドキュメントを参照して、OnPaintメソッドが使用可能かどうかを確認します。Refer to the Help documentation for the particular control you want to modify to see if the OnPaint method is available. すべての Windows フォーム コントロールの一覧については、「Windows フォームで使用するコントロール」を参照してください。For a list of all the Windows Form Controls, see Controls to Use on Windows Forms. コントロールがメンバ メソッドとしてOnPaintリストされていない場合、このメソッドをオーバーライドして外観を変更することはできません。If a control does not have OnPaint listed as a member method, you cannot alter its appearance by overriding this method. カスタム描画の詳細については、「コントロールのカスタム描画およびレンダリング」を参照してください。For more information about custom painting, see Custom Control Painting and Rendering.

    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. コントロールを保存して、動作確認を行います。Save and test your control.

関連項目See also