.NET 5 Windows FormsC#

【.NET C# Windows Forms】ユーザーコントロールプロジェクトの作成

.NET 5.0以降の.NETで、.NET Frameworkで作っていたユーザーコントロールライブラリの作成方法を調べてみました。

最終的には下図のように、Formアプリケーション作成時のツールボックスに作成中のUserControlが表示される事を目標としてます。.NET 5.0 UserControl

まず、ユーザーコントロール用のプロジェクトを作成するため、ソリューションエクスプローラのソリューション名の部分を右クリックし、追加→新しいプロジェクト でユーザーコントロール用のプロジェクトを追加します。

.NET 5.0 UserControl

しかし、ここでちょっとした不都合があり、プロジェクトのテンプレートにWindows フォームコントロールライブラリ(.NET Framework)はあるものの、Windows フォームコントロールライブラリ(.NET)が、ありません。

(2021.8.3) 新しいバージョンのVisual Studioでは Windows フォームコントロールライブラリが追加されました。そのためVisual Studioを更新し、Windows フォームコントロールライブラリを選択してコントロールライブラリを作成してください。

下図はVisual Studio Community 2019 Ver.16.10.4の画面です。

.NET5 C# ユーザーコントロールライブラリ


以下は旧バージョン時の説明です。

.NET 5.0 UserControl

仕方がないので、Windows Forms App(.NET)を選択し次へをクリックします。
(最終的にユーザーコントロールライブラリに修正します)

.NET 5.0 UserControl

次に表示されたウィンドウで、プロジェクト名に適当な名前を指定し、作成をクリックします。

.NET 5.0 UserControl

作成したプロジェクト名を右クリックし、 追加 → ユーザーコントロール(Windowsフォーム) をクリックします。

.NET 5.0 UserControl

今回は、名前をデフォルトのままにしていますが、適切なコントロールの名前を付けて追加をクリックします。

.NET 5.0 UserControl

プロジェクト名を右クリックし、プロパティをクリックし、アプリケーションを出力の種類Windowsアプリケーション から クラスライブラリに変更します。
また、.NET(.NET5.0以降)のユーザーコントロールを作成する場合は、対象のフレームワークも.NET5.0に変更します。

.NET 5.0 UserControl

出力の種類をクラスライブラリに変更した時点で、プロジェクトの作成時に作成されていたForm1.cs、Form1.Designer.cs、Form.resx、Program.csは必要なくなるので、削除しておきます。

.NET 5.0 UserControl

これで、元々はWindows Formsアプリとして作成されたプロジェクトでしたが、.NET用のユーザーコントロールのプロジェクトとなりました。

このユーザーコントロールを使用する側のWindows Formsのプロジェクトの依存関係を右クリックし、プロジェクト参照の追加をクリックします。

.NET 5.0 UserControl

次に表示されたユーザーコントロールのプロジェクト(ここではWindowsFormsApp2)にチェックを入れ、OKボタンをクリックします。

.NET 5.0 UserControl

ここで一旦、ソリューションをビルドします。

これで、最初に示したように、ユーザーコントロールを使う側(参照元)のプロジェクトのフォームを表示すると、ツールボックスのウィンドウに作成したユーザーコントロールが表示されます。

.NET 5.0 UserControl

 

(注意点)
ここでは、.NETのWindows Formsのプロジェクト(参照元)から、.NETのクラスライブラリのプロジェクト(参照先)を参照していますが、プロジェクトで設定している対象のフレームワークが、参照元のプロジェクトより、参照先のプロジェクトの方が新しいフレームワークを設定している場合、エラーになるので注意してください。

(参考)

【NU1201】プロジェクト XXX は XXX と互換性がありません。
あるプロジェクトと、別のライブラリなどのプロジェクトに依存関係(プロジェクトの参照)がある場合、プロジェクトで設定している対象のフレームワークが、参照元のプロジェクトより、参照先のプロジェクトが新しい場合、以下のエラーコードが表示されます。...

 

 .NET 5 C# Windows Forms プログラム へ戻る

コメント

タイトルとURLをコピーしました