次の方法で共有


チュートリアル: C を使用して Windows フォーム コントロールから継承する#

C# では、継承を使用して強力なカスタム コントロールを作成できます。 継承により、標準の Windows フォーム コントロールに固有のすべての機能を保持するだけでなく、カスタム機能も組み込むコントロールを作成できます。 このチュートリアルでは、ValueButtonという単純な継承コントロールを作成します。 このボタンは、標準の Windows フォーム Button コントロールから機能を継承し、ButtonValueと呼ばれるカスタム プロパティを公開します。

プロジェクトを作成する

新しいプロジェクトを作成するときは、ルート名前空間、アセンブリ名、プロジェクト名を設定し、既定のコンポーネントが正しい名前空間に含まれるように、その名前を指定します。

ValueButtonLib コントロール ライブラリと ValueButton コントロールを作成するには

  1. Visual Studio で、新しい Windows フォーム コントロール ライブラリ プロジェクトを作成し、ValueButtonLib名前を付けます。

    プロジェクト名 ValueButtonLibは、既定でルート名前空間にも割り当てられます。 ルート名前空間は、アセンブリ内のコンポーネントの名前を修飾するために使用されます。 たとえば、2 つのアセンブリに ValueButtonという名前のコンポーネントが用意されている場合は、ValueButtonLib.ValueButtonを使用して ValueButton コンポーネントを指定できます。 詳細については、「名前空間の」を参照してください。

  2. ソリューション エクスプローラー で、UserControl1.csを右クリックし、ショートカット メニューから [名前の変更] を選択します。 ファイル名を ValueButton.csに変更します。 コード要素 'UserControl1' へのすべての参照の名前を変更するかどうかを確認するメッセージが表示されたら、[はい] ボタンをクリックします。

  3. ソリューション エクスプローラー で、ValueButton.cs を右クリックし、[コードの表示]選択します。

  4. class ステートメント行を見つけて public partial class ValueButtonし、このコントロールが継承する型を UserControl から Buttonに変更します。 これにより、継承したコントロールは、Button コントロールのすべての機能を継承できます。

  5. ソリューション エクスプローラーので、ValueButton.cs ノードを開き、デザイナーによって生成されたコード ファイルを表示 ValueButton.Designer.csコード エディターでこのファイルを開きます。

  6. InitializeComponent メソッドを見つけて、AutoScaleMode プロパティを割り当てる行を削除します。 このプロパティは、Button コントロールに存在しません。

  7. [ファイル] メニューの [すべての 保存] を選択してプロジェクトを保存します。

    手記

    ビジュアル デザイナーは使用できなくなりました。 Button コントロールは独自の描画を行うため、デザイナーでその外観を変更することはできません。 コードで変更しない限り、そのビジュアル表現は継承するクラス (つまり、Button) とまったく同じになります。 UI 要素のないコンポーネントをデザイン サーフェイスに追加することもできます。

継承したコントロールにプロパティを追加する

継承された Windows フォーム コントロールの 1 つの使用可能な用途は、標準の Windows フォーム コントロールの外観は同じですが、カスタム プロパティを公開するコントロールの作成です。 このセクションでは、ButtonValue というプロパティをコントロールに追加します。

Value プロパティを追加するには

  1. ソリューション エクスプローラーで、ValueButton.csを右クリックし、ショートカット メニューから [コードの表示] クリックします。

  2. class ステートメントを見つけてください。 {の直後に、次のコードを入力します。

    // Creates the private variable that will store the value of your
    // property.
    private int varValue;
    // Declares the property.
    public int ButtonValue
    {
       // Sets the method for retrieving the value of your property.
       get
       {
          return varValue;
       }
       // Sets the method for setting the value of your property.
       set
       {
          varValue = value;
       }
    }
    

    このコードでは、ButtonValue プロパティの格納と取得に使用するメソッドを設定します。 get ステートメントは、プライベート変数 varValueに格納されている値に返される値を設定し、set ステートメントは、value キーワードを使用してプライベート変数の値を設定します。

  3. [ファイル] メニューの [すべて保存] を選択してプロジェクトを保存します。

コントロールをテストする

コントロールはスタンドアロン プロジェクトではありません。これらはコンテナーでホストされている必要があります。 コントロールをテストするには、コントロールを実行するためのテスト プロジェクトを指定する必要があります。 また、テスト プロジェクトをビルド (コンパイル) して、コントロールにアクセスできるようにする必要があります。 このセクションでは、コントロールをビルドし、Windows フォームでテストします。

コントロールをビルドするには

[ビルド] メニューの [ビルド ソリューション] をクリックします。 ビルドは、コンパイラ エラーや警告なしで成功するはずです。

テスト プロジェクトを作成するには

  1. [ファイル] メニューの [追加] をポイントし、[新しいプロジェクト をクリックして、[新しいプロジェクトの追加] ダイアログ ボックス 開きます。

  2. Visual C# ノードの下にある Windows ノードを選択し、Windows フォーム アプリケーションクリックします。

  3. [ ボックス] に、[テスト] を入力します。

  4. ソリューション エクスプローラーので、テスト プロジェクトの [参照] ノードを右クリックし、ショートカット メニューから [参照の追加] 選択して、[参照 追加] ダイアログ ボックスを表示します。

  5. 「プロジェクト」とラベル付けされたタブをクリックします。 ValueButtonLib プロジェクトは プロジェクト名の下に一覧表示されます。 プロジェクトをダブルクリックして、テスト プロジェクトへの参照を追加します。

  6. ソリューション エクスプローラーで、[テスト 右クリック、ビルド選択します。

フォームにコントロールを追加するには

  1. ソリューション エクスプローラーで、Form1.cs を右クリックし、ショートカット メニューから [デザイナーの表示] 選択します。

  2. ツールボックスで、ValueButtonLib コンポーネント選択します。 ValueButtonをダブルクリックします。

    ValueButton がフォームに表示されます。

  3. ValueButton を右クリックし、ショートカット メニューから [プロパティ] を選択します。

  4. プロパティ ウィンドウで、このコントロールのプロパティを調べます。 追加のプロパティ ButtonValue がある点を除き、これらは標準ボタンによって公開されるプロパティと同じであることに注意してください。

  5. ButtonValue プロパティを 5に設定します。

  6. ツールボックスの [すべての Windows フォーム ] タブで、[ラベル] ダブルクリックして、フォームに コントロールを追加します。

  7. フォームの中央にラベルを再配置します。

  8. valueButton1をダブルクリックします。

    コード エディター が開き、valueButton1_Click イベントが表示されます。

  9. 次のコード行を挿入します。

    label1.Text = valueButton1.ButtonValue.ToString();
    
  10. ソリューション エクスプローラー で、[テスト右クリックし、ショートカット メニューから [スタートアップ プロジェクト として設定 ] を選択します。

  11. デバッグ メニューから、デバッグ 開始を選択します。

    Form1 が表示されます。

  12. [valueButton1] をクリックします。

    label1に数字 '5' が表示され、継承されたコントロールの ButtonValue プロパティが、valueButton1_Click メソッドを介して label1 に渡されたことを示しています。 したがって、ValueButton コントロールは、標準の Windows フォーム ボタンのすべての機能を継承しますが、追加のカスタム プロパティを公開します。

関連項目