【.NET 10 / C#】 Windows Formsで特定のフォームを直接デバッグ実行する方法

📋 目次(クリックで展開)

Windows Forms アプリケーションの開発時に、「ログイン画面やメイン画面を飛ばして、今作っているサブフォーム(Form2 など)の動作だけを確認したい」という場面はよくあります。

しかし、残念ながら Visual Studio のソリューションエクスプローラーからフォームを右クリックしても「このフォームだけを実行」といった便利なメニューはありません。

この記事では、C# (.NET 10) 環境の Windows Forms プロジェクトで、スタートアップフォーム以外の任意のフォームを直接呼び出してデバッグ実行する方法を紹介します。

結論:エントリポイント(Program.cs)を書き換える

一番手っ取り早い解決策は、アプリケーションが起動する最初の場所、すなわち Program.cs を一時的に書き換えることです。

手順

  1. ソリューションエクスプローラーから Program.cs を開きます。
  2. Main メソッドの中にある Application.Run(…) の行を探します。
  3. 括弧の中のフォームクラスを、デバッグ起動したいフォームに変更します。

コード例

最近の.NET(.NET 6以降〜.NET 10)では、定型コードがスッキリしており、ApplicationConfiguration.Initialize() が使われるようになっています。

変更前(デフォルトの状態)

通常は Form1 がスタートアップフォームとして指定されています。

Program.cs
namespace MyApp;
internal static class Program
{
[STAThread]
static void Main()
{
ApplicationConfiguration.Initialize();
// デフォルトでは Form1 が起動する
Application.Run(new Form1());
}
}

変更後(Form2を直接起動したい場合)

new Form1() を new Form2() に書き換えるだけです。

Program.cs
namespace MyApp;
internal static class Program
{
[STAThread]
static void Main()
{
ApplicationConfiguration.Initialize();
// デバッグしたいフォーム(ここでは Form2)に変更!
Application.Run(new Form2());
}
}

これで「デバッグの開始(F5)」を実行すると、アプリケーション起動と同時に Form2 が立ち上がります。

💡 注意点とTips

この方法は非常に簡単ですが、いくつか注意しておくべきポイントがあります。

1. コンストラクタに引数がある場合

呼び出したいフォームが引数を要求するように設計されている場合(例:public Form2(int userId))、単に new Form2() と記述するとコンパイルエラーになります。その場合は、new Form2(999) のように、デバッグ用のダミー値を渡して初期化してください。

2. 状態の依存関係によるエラー

サブフォームが「メインフォームで初期化されたグローバル変数」や「ログイン画面で取得したデータベース接続」などに依存している場合、単独で起動すると NullReferenceException などのエラーが発生することがあります。 その場合は、Application.Run() の直前に、デバッグ用のモックデータや接続処理を一時的に記述しておく必要があります。

3. コミット前に必ず元に戻す!

最もありがちなミスです。デバッグが終わって本番用にビルドする際や、Git などのバージョン管理システムにコミットする前には、必ず元のスタートアップフォーム(new Form1() など)に戻すのを忘れないようにしましょう。

// TODO: コミット前に Form1 に戻すこと!
Application.Run(new Form2());

このように一時的なコメントを残しておくのもおすすめです。

まとめ

Windows Formsには特定フォームの単独実行機能はありませんが、Program.cs の Application.Run() を書き換えることで簡単に任意のフォームをテストできます。開発効率を上げるための小技として、ぜひ活用してみてください。


💬 コメント