C#でWindowsフォームアプリ(デスクトップアプリ)を作りたいけれど、「Visual Studio Codeでも作れるの?」と思う方は多いでしょう。
実は、Visual Studio Code(VS Code)でも拡張機能を導入すれば、C#のフォームアプリを開発できます。
本記事では、VS Codeを使ってC#フォームアプリを作成する具体的な手順を、初心者でも理解できるようにやさしく解説します。
環境構築から、実際にボタンをクリックして動作させるところまで、順を追って説明します。
Visual Studio CodeとVisual Studioの違い
まず最初に、よく混同される「Visual Studio」と「Visual Studio Code」の違いを理解しておきましょう。
- Visual Studio:Microsoft公式の統合開発環境(IDE)。C#や.NET FrameworkのWindowsフォームアプリをGUIで直感的に作れる。
- Visual Studio Code(VS Code):軽量なエディタ。多くの言語に対応し、拡張機能を追加して使う。
Windowsフォームアプリを作るには、通常はVisual Studioが主流です。
ただし、VS Codeでも .NET 6以降のWindows Forms を扱うことが可能です。
デザイナー(GUI配置)は使えませんが、コードでUIを構築することができます。
開発に必要な環境とツールの準備
1. .NET SDKのインストール
C#を実行するために、Microsoft公式の.NET SDKをインストールします。
以下の公式サイトから最新のLTS版をダウンロードしてください。
インストール後、コマンドプロンプトまたはPowerShellで以下のコマンドを実行し、バージョンを確認します。
dotnet --version
表示されれば、インストール成功です。
2. Visual Studio Codeのインストール
次にVS Code本体をインストールします。
👉 Visual Studio Code公式サイト
Windows、Mac、Linuxすべて対応しています。
インストールが終わったら、VS Codeを起動します。
3. C#拡張機能のインストール
VS Codeは拡張機能を使ってC#の開発をサポートします。
左側の拡張機能アイコン(四角いアイコン)をクリックして、「C#」で検索します。
以下の拡張機能をインストールしてください。
- C# Dev Kit
- .NET Install Tool
- C# for Visual Studio Code (powered by OmniSharp)
これでC#の構文ハイライトや補完、デバッグ機能が利用できるようになります。
Windowsフォームアプリのプロジェクト作成
1. プロジェクトフォルダを作る
例として「MyFormApp」というフォルダを作ります。
mkdir MyFormApp
cd MyFormApp
2. .NETプロジェクトを作成
Windowsフォームアプリ用のテンプレートを使ってプロジェクトを作成します。
dotnet new winforms -o MyFormApp
このコマンドでWindowsフォームアプリの基本構成が自動生成されます。
3. プロジェクトをVS Codeで開く
code .
これで、VS Codeが現在のフォルダを開きます。
「.csproj」ファイルがあることを確認してください。
これがプロジェクトの構成ファイルです。
メインフォームのコードを理解する
生成された「Program.cs」と「Form1.cs」が、アプリの中心部分です。
Program.cs の例:
using System;
using System.Windows.Forms;
namespace MyFormApp
{
internal static class Program
{
[STAThread]
static void Main()
{
ApplicationConfiguration.Initialize();
Application.Run(new Form1());
}
}
}
このコードは、アプリのエントリーポイントです。Application.Run(new Form1())
で最初に表示するフォームを指定しています。
Form1.cs の例:
using System;
using System.Windows.Forms;
namespace MyFormApp
{
public partial class Form1 : Form
{
private Button button1;
private Label label1;
public Form1()
{
InitializeComponent();
this.Text = "C#フォームアプリの例";
button1 = new Button();
button1.Text = "クリック";
button1.Location = new System.Drawing.Point(50, 50);
button1.Click += Button1_Click;
label1 = new Label();
label1.Text = "ボタンを押してください";
label1.Location = new System.Drawing.Point(50, 100);
label1.AutoSize = true;
this.Controls.Add(button1);
this.Controls.Add(label1);
}
private void Button1_Click(object sender, EventArgs e)
{
label1.Text = "ボタンがクリックされました!";
}
}
}
ここでは、ボタンとラベルをコードで配置しています。
ボタンをクリックすると、ラベルのテキストが変わるシンプルな動作です。
アプリのビルドと実行
プロジェクトが準備できたら、以下のコマンドでアプリをビルドします。
dotnet build
問題がなければ、次に実行します。
dotnet run
これでフォームウィンドウが立ち上がり、「クリック」ボタンを押すとメッセージが切り替わります。
コードだけでUIを作るときのコツ
Visual Studio Codeにはフォームデザイナーがないため、UIはすべてコードで記述します。
そのため、コントロール(ボタンやラベルなど)を配置するときは、座標とサイズを手動で指定する必要があります。
たとえば、複数のボタンを並べたい場合:
for (int i = 0; i < 3; i++)
{
Button btn = new Button();
btn.Text = $"ボタン{i + 1}";
btn.Location = new System.Drawing.Point(50, 50 + (i * 40));
this.Controls.Add(btn);
}
このようにループを使えば、規則的にUIを並べられます。
慣れるまでは少し面倒ですが、ロジックを含めた柔軟なUI設計ができるのが魅力です。
デバッグと修正のポイント
- 実行中にウィンドウが表示されない場合
→ApplicationConfiguration.Initialize();
の記述を確認 - エラー「WinFormsテンプレートが見つからない」場合
→.NET Desktop Runtime
がインストールされていない可能性がありますdotnet workload install windowsdesktop
- コード補完が効かない場合
→ OmniSharpが有効になっているか確認(VS Code再起動)
応用:テキストボックスやメッセージボックスを追加する
少し応用して、テキスト入力とメッセージ表示を追加してみましょう。
using System;
using System.Windows.Forms;
namespace MyFormApp
{
public partial class Form1 : Form
{
private TextBox textBox;
private Button button;
public Form1()
{
textBox = new TextBox();
textBox.Location = new System.Drawing.Point(30, 30);
textBox.Width = 150;
button = new Button();
button.Text = "表示";
button.Location = new System.Drawing.Point(30, 70);
button.Click += Button_Click;
this.Controls.Add(textBox);
this.Controls.Add(button);
}
private void Button_Click(object sender, EventArgs e)
{
string message = textBox.Text;
MessageBox.Show($"入力内容:{message}", "確認");
}
}
}
これで、入力した文字をボタンで表示できるシンプルなアプリが完成します。
まとめ
Visual Studio CodeでもC#フォームアプリを作成することは可能です。
GUIデザイナーが使えない分、最初はコードでUIを組むことに戸惑うかもしれませんが、慣れればロジックとデザインを同時に制御できる柔軟な開発が可能です。