チュートリアル: C を使用して Windows フォーム コントロールから継承する#
C# では、継承を使用して強力なカスタム コントロールを作成できます。 継承により、標準の Windows フォーム コントロールに固有のすべての機能を保持するだけでなく、カスタム機能も組み込むコントロールを作成できます。 このチュートリアルでは、ValueButton
という単純な継承コントロールを作成します。 このボタンは、標準の Windows フォーム Button コントロールから機能を継承し、ButtonValue
と呼ばれるカスタム プロパティを公開します。
プロジェクトを作成する
新しいプロジェクトを作成するときは、ルート名前空間、アセンブリ名、プロジェクト名を設定し、既定のコンポーネントが正しい名前空間に含まれるように、その名前を指定します。
ValueButtonLib コントロール ライブラリと ValueButton コントロールを作成するには
Visual Studio で、新しい
Windows フォーム コントロール ライブラリ プロジェクトを作成し、ValueButtonLib名前を付けます。 プロジェクト名
ValueButtonLib
は、既定でルート名前空間にも割り当てられます。 ルート名前空間は、アセンブリ内のコンポーネントの名前を修飾するために使用されます。 たとえば、2 つのアセンブリにValueButton
という名前のコンポーネントが用意されている場合は、ValueButtonLib.ValueButton
を使用してValueButton
コンポーネントを指定できます。 詳細については、「名前空間の」を参照してください。ソリューション エクスプローラー で、UserControl1.csを右クリックし、ショートカット メニューから [名前の変更] を選択します。 ファイル名を ValueButton.csに変更します。 コード要素 '
UserControl1
' へのすべての参照の名前を変更するかどうかを確認するメッセージが表示されたら、[はい] ボタンをクリックします。ソリューション エクスプローラー
で、 ValueButton.cs を右クリックし、[コードの表示]選択します。 class
ステートメント行を見つけてpublic partial class ValueButton
し、このコントロールが継承する型を UserControl から Buttonに変更します。 これにより、継承したコントロールは、Button コントロールのすべての機能を継承できます。ソリューション エクスプローラーので、ValueButton.cs ノードを開き、デザイナーによって生成されたコード ファイルを表示 ValueButton.Designer.cs。 コード エディターでこのファイルを開きます。
InitializeComponent
メソッドを見つけて、AutoScaleMode プロパティを割り当てる行を削除します。 このプロパティは、Button コントロールに存在しません。[
ファイル] メニューの [すべての保存] を選択してプロジェクトを保存します。
継承したコントロールにプロパティを追加する
継承された Windows フォーム コントロールの 1 つの使用可能な用途は、標準の Windows フォーム コントロールの外観は同じですが、カスタム プロパティを公開するコントロールの作成です。 このセクションでは、ButtonValue
というプロパティをコントロールに追加します。
Value プロパティを追加するには
ソリューション エクスプローラー
で、 ValueButton.cs を右クリックし、ショートカット メニューから [コードの表示]クリックします。 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
キーワードを使用してプライベート変数の値を設定します。[ファイル] メニューの [すべて保存] を選択してプロジェクトを保存します。
コントロールをテストする
コントロールはスタンドアロン プロジェクトではありません。これらはコンテナーでホストされている必要があります。 コントロールをテストするには、コントロールを実行するためのテスト プロジェクトを指定する必要があります。 また、テスト プロジェクトをビルド (コンパイル) して、コントロールにアクセスできるようにする必要があります。 このセクションでは、コントロールをビルドし、Windows フォームでテストします。
コントロールをビルドするには
[ビルド] メニューの [ビルド ソリューション] をクリックします。 ビルドは、コンパイラ エラーや警告なしで成功するはずです。
テスト プロジェクトを作成するには
[
ファイル] メニューの [追加] をポイントし、[新しいプロジェクトをクリックして、[新しいプロジェクトの追加] ダイアログ ボックス 開きます。 Visual C# ノードの下にあるWindows ノードを選択し、Windows フォーム アプリケーションクリックします。 [名 ボックス] に、[テスト] を入力します。
ソリューション エクスプローラーの で、テスト プロジェクトの [参照 ] ノードを右クリックし、ショートカット メニューから [参照の追加]選択して、[参照 追加] ダイアログ ボックスを表示します。 「プロジェクト」とラベル付けされたタブをクリックします。 ValueButtonLib プロジェクトは プロジェクト名の下に一覧表示されます。 プロジェクトをダブルクリックして、テスト プロジェクトへの参照を追加します。
ソリューション エクスプローラーで、[テスト 、ビルド右クリック 選択します。
フォームにコントロールを追加するには
ソリューション エクスプローラー
で、 Form1.cs を右クリックし、ショートカット メニューから [デザイナーの表示]選択します。 ツールボックス で、ValueButtonLib コンポーネント選択します。 ValueButtonをダブルクリックします。 ValueButton がフォームに表示されます。
ValueButton を右クリックし、ショートカット メニューから [プロパティ] を選択します。
プロパティ ウィンドウで、このコントロールのプロパティを調べます。 追加のプロパティ ButtonValue がある点を除き、これらは標準ボタンによって公開されるプロパティと同じであることに注意してください。
ButtonValue プロパティを 5に設定します。
ツールボックス の [すべての Windows フォーム] タブで、[ラベル] ダブルクリックして、フォームに コントロールを追加します。 フォームの中央にラベルを再配置します。
valueButton1
をダブルクリックします。コード エディター が開き、
valueButton1_Click
イベントが表示されます。次のコード行を挿入します。
label1.Text = valueButton1.ButtonValue.ToString();
ソリューション エクスプローラー
で、[テスト 右クリックし、ショートカット メニューから [スタートアップ プロジェクト として設定 ] を選択します。 デバッグ メニューから、デバッグ 開始を選択します。
Form1
が表示されます。[
valueButton1
] をクリックします。label1
に数字 '5' が表示され、継承されたコントロールのButtonValue
プロパティが、valueButton1_Click
メソッドを介してlabel1
に渡されたことを示しています。 したがって、ValueButton
コントロールは、標準の Windows フォーム ボタンのすべての機能を継承しますが、追加のカスタム プロパティを公開します。
関連項目
- 方法: [ツールボックス項目の選択] ダイアログ ボックスにコントロールを表示する
- チュートリアル: Visual C# を使用した複合コントロールの作成
.NET Desktop feedback