.NET 5.0以降の.NETで、.NET Frameworkで作っていたユーザーコントロールライブラリの作成方法を調べてみました。
最終的には下図のように、Formアプリケーション作成時のツールボックスに作成中のUserControlが表示される事を目標としてます。
まず、ユーザーコントロール用のプロジェクトを作成するため、ソリューションエクスプローラのソリューション名の部分を右クリックし、追加→新しいプロジェクト でユーザーコントロール用のプロジェクトを追加します。
しかし、ここでちょっとした不都合があり、プロジェクトのテンプレートにWindows フォームコントロールライブラリ(.NET Framework)はあるものの、Windows フォームコントロールライブラリ(.NET)が、ありません。
(2021.8.3) 新しいバージョンのVisual Studioでは Windows フォームコントロールライブラリが追加されました。そのためVisual Studioを更新し、Windows フォームコントロールライブラリを選択してコントロールライブラリを作成してください。
下図はVisual Studio Community 2019 Ver.16.10.4の画面です。
以下は旧バージョン時の説明です。
仕方がないので、Windows Forms App(.NET)を選択し次へをクリックします。
(最終的にユーザーコントロールライブラリに修正します)
次に表示されたウィンドウで、プロジェクト名に適当な名前を指定し、作成をクリックします。
作成したプロジェクト名を右クリックし、 追加 → ユーザーコントロール(Windowsフォーム) をクリックします。
今回は、名前をデフォルトのままにしていますが、適切なコントロールの名前を付けて追加をクリックします。
プロジェクト名を右クリックし、プロパティをクリックし、アプリケーションを出力の種類を Windowsアプリケーション から クラスライブラリに変更します。
また、.NET(.NET5.0以降)のユーザーコントロールを作成する場合は、対象のフレームワークも.NET5.0に変更します。
出力の種類をクラスライブラリに変更した時点で、プロジェクトの作成時に作成されていたForm1.cs、Form1.Designer.cs、Form.resx、Program.csは必要なくなるので、削除しておきます。
これで、元々はWindows Formsアプリとして作成されたプロジェクトでしたが、.NET用のユーザーコントロールのプロジェクトとなりました。
このユーザーコントロールを使用する側のWindows Formsのプロジェクトの依存関係を右クリックし、プロジェクト参照の追加をクリックします。
次に表示されたユーザーコントロールのプロジェクト(ここではWindowsFormsApp2)にチェックを入れ、OKボタンをクリックします。
ここで一旦、ソリューションをビルドします。
これで、最初に示したように、ユーザーコントロールを使う側(参照元)のプロジェクトのフォームを表示すると、ツールボックスのウィンドウに作成したユーザーコントロールが表示されます。
(注意点)
ここでは、.NETのWindows Formsのプロジェクト(参照元)から、.NETのクラスライブラリのプロジェクト(参照先)を参照していますが、プロジェクトで設定している対象のフレームワークが、参照元のプロジェクトより、参照先のプロジェクトの方が新しいフレームワークを設定している場合、エラーになるので注意してください。
(参考)
コメント