方法 : 既存の Windows フォーム コントロールから継承する
既存のコントロールの機能を拡張する場合は、継承によって既存のコントロールから派生したコントロールを作成します。既存のコントロールから継承すると、そのコントロールのすべての機能およびビジュアル プロパティが引き継がれます。たとえば、Button から継承したコントロールを作成すると、新しいコントロールは標準の Button コントロールと同じ外観を持ち、同じように機能します。その後で、カスタム メソッドやカスタム プロパティの実装によって、新しいコントロールの機能を拡張または変更できます。いくつかのコントロールでは、継承したコントロールの OnPaint メソッドをオーバーライドして、外観を変更することもできます。
![]() |
---|
使用している設定またはエディションによっては、表示されるダイアログ ボックスやメニュー コマンドがヘルプに記載されている内容と異なる場合があります。設定を変更するには、[ツール] メニューの [設定のインポートとエクスポート] をクリックします。詳細については、「Visual Studio の設定」を参照してください。 |
継承したコントロールを作成するには
新しい Windows プロジェクトを作成します。
このプロジェクトは、Windows アプリケーション プロジェクトや Windows コントロール ライブラリ プロジェクトなど、どの種類のプロジェクトでもかまいません。Windows コントロール ライブラリ プロジェクトを選択する場合は、用意されている空白のコントロールを使用して、手順 2. と 3. を省略することもできます。
[プロジェクト] メニューの [ユーザー コントロールの追加] をクリックします。
[新しい項目の追加] ダイアログ ボックスが表示されます。
[新しい項目の追加] ダイアログ ボックスの [カスタム コントロール] をダブルクリックします。
新しいカスタム コントロールがプロジェクトに追加されます。
コード エディタで、継承する基本クラスとして Control を指定する行を見つけます。基本クラスの名前を継承元のコントロールの名前に変更します。
たとえば、Button から継承する場合は、次のようになります。
Inherits System.Windows.Forms.Button
public class CustomControl1 : System.Windows.Forms.Button
public class CustomControl1 extends System.Windows.Forms.Button
コントロールに含めるカスタム メソッドやカスタム プロパティを実装します。
コントロールの外観を変更する場合は、OnPaint メソッドをオーバーライドします。
メモ :
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. }
保存してコントロールの動作確認を行います。
参照
処理手順
方法 : コントロール クラスを継承する
方法 : UserControl クラスを継承する
方法 : Windows フォームのコントロールを作成する
Visual Basic 2005 における継承されたイベント ハンドラのトラブルシューティング