DOBON.NET

「○○○クラスの代わりに派生クラスを使用します」の意味は?

このサイトの記事では、あるコントロールから派生したクラスを作成して、基のコントロールの代わりに使用するように要求している場合があります。例えば、「コントロールで矢印、Tab、Enter、Escキーが押されたことを知る」ではButtonから派生したクラスを、「DataGridViewでEnterキーを押すと隣のセルにフォーカスが移動されるようにする」ではDataGridViewから派生したクラスを、「DataGrid内の指定された行までスクロールする」ではDataGridから派生したクラスを、基のコントロールの代わりに使用することを求めています。

ここでは、「コントロールで矢印、Tab、Enter、Escキーが押されたことを知る」で作成したButtonから派生したButtonExクラスを例に、あるコントロールから派生したクラスを基のコントロールの代わりに使用する具体的な方法を説明します。

Visual Studio 2003以前で、プロジェクトにユーザーコントロールを追加する方法

Visual Studio 2003以前では、以下のような方法でButtonExクラスをプロジェクトに追加すると、Visual StudioのツールボックスにButtonExコントロールを表示することができます。ツールボックスに表示されたButtonExコントロールは、普通のButtonコントロールのようにフォームデザイナで使用することができます。

  1. メニューの「プロジェクト」-「新しい項目の追加」により、「新しい項目の追加」ダイアログを表示して、「ユーザーコントロール」を選択し、ファイル名を適当に変更して、「OK」ボタンをクリックします。
  2. ユーザーコントロールのデザイン画面が表示されたら、右クリックして、メニューから「コードの表示」を選択します。
  3. 表示されたユーザーコントロールのコードを全て削除し、そこにButtonExクラスのコードを記述します。
  4. 一度プロジェクトをビルドします。
  5. フォームデザイナを使って、ツールボックスの「マイユーザーコントロール」タブに表示されるButtonExをフォームに配置し、通常のButtonのように使用します。

Visual Studio 2005以降の場合

上記のユーザーコントロールを追加する方法は、Visual Studio 2005以降でも使えます。しかしVisual Studio 2005以降では、ButtonExクラスをどこに記述してもツールボックスに表示されます。通常は、新しいクラスを作成して、そこに記述します。

  1. メニューの「プロジェクト」-「クラスの追加」により、「新しい項目の追加」ダイアログを表示します。ファイル名を適当に変更して、「OK」ボタンをクリックします。
  2. 新しいクラスが作成され、コードエディタが開き、コードが表示されます。そのコードを全て削除し、代わりにButtonExクラスのコードを記述します。
  3. 一度プロジェクトをビルドします。
  4. フォームデザイナを使って、ツールボックスの「(プロジェクト名)コンポーネント」タブに表示されるButtonExをフォームに配置し、通常のButtonのように使用します。ButtonExが見つからない場合は、「ツールボックスの検索」で検索してください。
    ツールボックス

注意:もし上記の方法でツールボックスにButtonExが表示されない場合は、メニューの「ツール」-「オプション」でオプションダイアログを表示してから、「Windowsフォームデザイナー」という項目にある「ツールボックスを自動取得する」という設定をTrueにしてから再度お試しください。もしこの項目がすでにTrueになっているか、Falseのままにしておきたいという場合は、メニューの「プロジェクト」-「プロジェクトツールボックスアイテムを最新の情報に更新」を選択してください。

DLLを作成する方法

他のプロジェクトでもButtonExコントロールを使用するならば、DLLを作成するとよいでしょう。以下にその手順を示します。

  1. メニューの「ファイル」-「新規作成」-「プロジェクト」から、新しくクラスライブラリを作成します。
  2. あらかじめ書かれているコードを全て削除し、そこにButtonExクラスのコードを記述します。
  3. 参照設定に適当なDLLを追加します。例えばButtonExクラスならば、System.Windows.Forms.dllが必要です。参照設定にDLLを追加する方法は、こちらで説明しています。
  4. ビルドして、DLLを作成します。
  5. ButtonExを使用するプロジェクトのフォームデザイナを表示します。
  6. ツールボックスの適当な場所で右クリックし、メニューから「アイテムの追加と削除」を選択します。
  7. 「ツールボックスのカスタマイズ」ダイアログの「参照」ボタンをクリックし、先ほど作成したDLLを選択します。
  8. 「ツールボックスのカスタマイズ」ダイアログのリストに「ButtonEx」が追加され、その左のチェックボックスにチェックが付いていることを確認します。
  9. 「OK」ボタンをクリックします。
  10. ツールボックスにButtonExが追加されますので、これを通常のButtonのように使用します。

コードを書き換える方法

すでにフォームに配置されたButtonをButtonExに置き換えるには、コードを直接書き換えます。ただしこの方法はフォームデザイナが管理し、「コードエディタで変更しないでください」とさせている部分を変更するため、それなりに危険だということをご了承ください。

  1. 「Ctrl + F」キーを押して、検索ダイアログを表示します。
  2. 検索する文字列を「System.Windows.Forms.Button」とします。検索対象は、「現在のドキュメント」にします。「非表示のテキストを検索」も有効にしておきます。
  3. 検索を開始し、「System.Windows.Forms.Button」が見つかったら、そのButtonがButtonExに置き換えたいButtonか確認します。もしそうであれば、「System.Windows.Forms.Button」を「ButtonEx」(名前空間をつけた場合は、名前空間名もつける)に書き換えます。
    例えば、フォームにButtonコントロール「Button1」が配置されており、Button1をButtonExに変更するには、フォームクラス内でButton1フィールドが定義されている箇所と、InitializeComponentメソッド内でButtonのインスタンスを作成している箇所を変更する必要があります。
    VB.NET
    コードを隠すコードを選択
    Partial Class Form1
        Inherits System.Windows.Forms.Form
    
        Private Sub InitializeComponent()
            '(省略....)
            'Me.Button1 = New System.Windows.Forms.Button
            Me.Button1 = New ButtonEx
            '(省略....)
        End Sub
    
        '(省略....)
        'Friend WithEvents Button1 As System.Windows.Forms.Button
        Friend WithEvents Button1 As ButtonEx
        '(省略....)
    End Class
    
    C#
    コードを隠すコードを選択
    namespace Project1
    {
        partial class Form1
        {
            private void InitializeComponent()
            {
                //(省略...)
                //this.Button1 = new System.Windows.Forms.Button();
                this.Button1 = new ButtonEx();
                //(省略...)
            }
    
            //(省略...)
            //private System.Windows.Forms.Button Button1;
            private ButtonEx Button1;
            //(省略...)
        }
    }
    
  4. 後は、通常のButtonコントロールと同じようにButtonExを使うことができます。

動的にコントロールを追加する方法

動的にコントロールを追加する方法を知っている方には、説明の必要はないでしょう。通常のButtonコントロールと同じように、ButtonExを使用できます。

動的にコントロールを追加する方法は、こちらで説明しています。

  • 履歴:
  • 2013/9/1 「Visual Studio 2005以降の場合」に画像と注意書き(コメントを参考にさせていただきました)を追加。

注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。

  • 「???を参照に追加します」の意味が分からないという方は、こちらをご覧ください。
  • .NET Tipsをご利用いただく際は、注意事項をお守りください。
共有する

この記事への評価

この記事へのコメント

この記事に関するコメントを投稿するには、下のボタンをクリックしてください。投稿フォームへ移動します。通常のご質問、ご意見等は掲示板へご投稿ください。