【.NET 10 / C#】 Windows Formsで特定のフォームを直接デバッグ実行する方法
📋 目次(クリックで展開)
Windows Forms アプリケーションの開発時に、「ログイン画面やメイン画面を飛ばして、今作っているサブフォーム(Form2 など)の動作だけを確認したい」という場面はよくあります。
しかし、残念ながら Visual Studio のソリューションエクスプローラーからフォームを右クリックしても「このフォームだけを実行」といった便利なメニューはありません。
この記事では、C# (.NET 10) 環境の Windows Forms プロジェクトで、スタートアップフォーム以外の任意のフォームを直接呼び出してデバッグ実行する方法を紹介します。
結論:エントリポイント(Program.cs)を書き換える
一番手っ取り早い解決策は、アプリケーションが起動する最初の場所、すなわち Program.cs を一時的に書き換えることです。
手順
- ソリューションエクスプローラーから Program.cs を開きます。
- Main メソッドの中にある Application.Run(…) の行を探します。
- 括弧の中のフォームクラスを、デバッグ起動したいフォームに変更します。
コード例
最近の.NET(.NET 6以降〜.NET 10)では、定型コードがスッキリしており、ApplicationConfiguration.Initialize() が使われるようになっています。
変更前(デフォルトの状態)
通常は Form1 がスタートアップフォームとして指定されています。
namespace MyApp;internal static class Program{ [STAThread] static void Main() { ApplicationConfiguration.Initialize();
// デフォルトでは Form1 が起動する Application.Run(new Form1()); }}変更後(Form2を直接起動したい場合)
new Form1() を new Form2() に書き換えるだけです。
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() を書き換えることで簡単に任意のフォームをテストできます。開発効率を上げるための小技として、ぜひ活用してみてください。
💬 コメント