12
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

System.Windows.Formsを.NET環境のクラスライブラリで使おう

Posted at

フォームアプリのパーツ関連のロジックをクラスライブラリで書きたいというケースはよくありますが、System.Windows.Forms名前空間の導入方法でつまづきがちです。

.NET Frameworkの時代はdll参照で気軽にできたものですが、.NET(.NET Core)環境では方法が変わっています。メモとして残しておきます。

環境

.NET 7.0

導入まで2ステップ

1. プロジェクトのターゲットOSの変更

プロジェクトを右クリック→プロパティ→アプリケーション→ターゲットOSにて、コンボボックスをWindowsに変更します。

動作環境をWindowsに限定するものとなります。Winフォームのパーツを扱うため必須の設定となります.

スクリーンショット 2023-04-22 165806.png

2. プロジェクトファイルのXMLに加筆

Visual Studioのソリューションエクスプローラーからプロジェクトファイルをダブルクリックするか、ソリューション内のcsprojファイルをテキストエディタ等で開き、次の通り行を追加します。

+記号を付した"UseWindowsForms"を追加しています。

変更前

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>net7.0-windows</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>

</Project>

変更後

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>net7.0-windows</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
+   <UseWindowsForms>true</UseWindowsForms>
  </PropertyGroup>

</Project>

3. usingステートメントに追加

ここまでくれば、コード上でSystem.Windows.Forms名前空間を使用できるようになっています。

using System.Windows.Forms; //←追加

namespace ClassLibrary1 {
    public class Class1 {
        public void Hoge(DataGridView dataGridView) {
            //DataGridViewクラスなどをクラスライブラリで利用可能
        }
    }
}
12
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?