C# では、 継承を通じて強力なカスタム コントロールを作成できます。 継承により、標準の Windows フォーム コントロールに固有のすべての機能を保持するだけでなく、カスタム機能も組み込むコントロールを作成できます。 このチュートリアルでは、 ValueButtonと呼ばれる単純な継承コントロールを作成します。 このボタンは、標準の Windows フォーム Button コントロールから機能を継承し、 ButtonValueと呼ばれるカスタム プロパティを公開します。
プロジェクトの作成
新しいプロジェクトを作成するときは、ルート名前空間、アセンブリ名、プロジェクト名を設定し、既定のコンポーネントが正しい名前空間に含まれるように、その名前を指定します。
ValueButtonLib コントロール ライブラリと ValueButton コントロールを作成するには
Visual Studio で、新しい Windows フォーム コントロール ライブラリ プロジェクトを 作成し、 ValueButtonLib という名前を付けます。
プロジェクト名
ValueButtonLibは、既定でルート名前空間にも割り当てられます。 ルート名前空間は、アセンブリ内のコンポーネントの名前を修飾するために使用されます。 たとえば、2 つのアセンブリにValueButtonという名前のコンポーネントが用意されている場合は、ValueButtonを使用してValueButtonLib.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 フォーム] タブで、[ラベル] をダブルクリックして、フォームにLabel コントロールを追加します。
フォームの中央にラベルを再配置します。
valueButton1をダブルクリックします。コード エディターが開き、
valueButton1_Clickイベントが表示されます。次のコード行を挿入します。
label1.Text = valueButton1.ButtonValue.ToString();ソリューション エクスプローラーで、[テスト] を右クリックし、ショートカット メニューから [スタートアップ プロジェクトとして設定] を選択します。
[ デバッグ ] メニューの [ デバッグの開始] を選択します。
Form1が表示されます。valueButton1をクリックします。label1に数字 '5' が表示され、継承されたコントロールのButtonValueプロパティが、label1メソッドを介してvalueButton1_Clickに渡されたことを示しています。 したがって、ValueButtonコントロールは標準の Windows フォーム ボタンのすべての機能を継承しますが、追加のカスタム プロパティを公開します。
こちらも参照ください
.NET Desktop feedback