.NET TIPS

Visual Studio .NET 2003で作成したWindowsフォームを部分クラスの形式に変換するには?[C#、VB]

デジタルアドバンテージ 岸本 真二郎
2009/05/28

 Visual Studio .NET 2003(以下、VS.NET 2003)で作成したプロジェクトをVisual Studio 2005(以下、VS 2005)以降のVisual Studioでオープンすると、「Visual Studio変換ウィザード」が起動し、プロジェクトを最新の環境に対応した形式に変換できる。

 しかし、Windowsフォーム・アプリケーションの場合、フォームのコードは部分クラス(Partialクラス)を使った記述には変換されない(VS 2005以降では、.NET Framework 2.0で導入された部分クラスの機能を活用することにより、自動生成されるコントロールの定義と、開発者が記述するイベント・ハンドラが別ファイルになっている)。このため、変換後のプロジェクトで作業を継続しようとすると、統合環境(IDE)が自動生成するコードと自分で記述したコードが混在してしまい見通しが悪くなるといった問題が発生する。

 そこで本稿では、VS.NET 2003で作成したWindowsフォーム・アプリケーションに含まれるクラスを、手作業によりVS 2005以降に対応した部分クラスに変更する手順を紹介する。

デザイナ・ファイルの追加

 まず、Visual Studio変換ウィザードで、VS.NET 2003のプロジェクトをVS 2005もしくはVS 2008のプロジェクトに変換する。その際に発生したエラーは修正しておく。

 そして、VS.NET 2003のプロジェクトには存在しなかったデザイナ・ファイル(C#では「xxx.Designer.cs」、VBでは「xxx.Designer.vb」)をプロジェクトに追加し、必要なコードをこれに移していく。この手順については、VBとC#の場合に分けて説明する。なお、ここでは「Form1」という名前のフォームを変換する場合の作業例を示している。

VBの場合

 メニューから[プロジェクト]−[クラスの追加]を選択して、プロジェクトに空のクラスを1つ追加する。ファイル名は、Form1.vbのデザイナ・ファイルである、「Form1.Designer.vb」とする(Windowsフォームが「Form1.vb」で記述されている場合)。


メニューまたはソリューション・エクスプローラからクラスの追加を行う

 このように追加したデザイナ・ファイルは、ソリューション・エクスプローラ上では非表示になっているが、ソリューション・エクスプローラのツールバーで[すべてのファイルを表示]ボタンをクリックすると、Form1.vbの下に表示されている。


プロジェクトに追加されたデザイナ・ファイル

 いま追加したデザイナ・ファイルの中身は、クラスの枠が定義されているだけである。

Public Class Form1

End Class
作成した直後の「Form1.Designer.vb」

 次に、Form1.vbにすでに記述されているフォーム関連の記述を、このデザイナ・ファイルに移動する。イベント・ハンドラ以外の自動生成されたコントロールの定義部分と、コンストラクタであるNewメソッド、フォームが破棄される際に呼び出されるDisposeメソッドなどである。

■クラスの定義部分の変更

 最後に、Form1.vbのForm1クラスと、新規追加したデザイナ・ファイルのForm1クラスに「Partialキーワード」を追加する。さらにForm1.vbの基底クラスの記述をForm1.Designer.vbに移動する。

Public Partial Class Form1
'  Inherits System.Windows.Forms.Form ' 削除
変更後のForm1.vbのクラス定義部分
Partialキーワードを追加し、基底クラスの指定を削除する。

Public Partial Class Form1
  Inherits System.Windows.Forms.Form
変更後の Form1.Designer.vbのクラス定義部分
Partialキーワードを追加し、基底クラスを指定する

 以上の操作の後、デザイナでフォームをオープンし、例えばツールボックスからコントロールを配置すると、新しく追加したデザイナ・ファイルにコントロールの定義が記述されるのを確認できるはずだ。

 VBで必要な作業は以上である。VS 2005以降のプロジェクトに含まれるアプリケーション情報(Application.Designer.vb)やリソース情報(Resources.Designer.vb)などは、必要であればプロジェクトのプロパティを設定することで自動的に生成される。

C#の場合

 C#の場合もVBと同様に、デザイナ・ファイルをプロジェクトに追加して、フォームに配置したコントロールの定義部分や、コントロールのプロパティの設定部分、およびDisposeメソッドなどをデザイナ・ファイルに移動する。

 さらに同様にして、Form1.cs、Form1.Designer.csファイルのクラス定義部分にpartialキーワードを追加する。ただし、基底クラスの指定については変更する必要はない。

■スタートアップ・クラスの追加

 C#を使ってVS.NET 2003でWindowsフォーム・アプリケーションのプロジェクトを作成した場合は、Form1.csの中にMainメソッドが記述されている。

 これをVS 2005以降のスタイルに変更するには、さらにクラス・ファイルを追加し(通常、ファイル名は「Program.cs」)、Form1.csにある、Mainメソッドを移動する。また、usingディレクティブを使って、System.Windows.Forms名前空間を参照しておく。具体的には次のようになる。

using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms; // 追加

namespace WinApp2003
{
  static class Program // staticを追加
  {
    /// <summary>
    /// アプリケーションのメイン エントリ ポイントです。
    /// </summary>
    [STAThread]
    static void Main()
    {
      Application.EnableVisualStyles(); // 必要なら追加
      Application.Run(new Form1());
    }
  }
}
スタートアップ クラスの追加(Program.cs)

 なおVS 2005以降では、このコードのようにApplication.EnableVisualStylesメソッド呼び出しを追加することで、コモン・コントロールをWindows XP以降のスタイルに変更できる。

 最後に、プロジェクトのプロパティで、[アプリケーション]タブを開き、[スタートアップ オブジェクト]に、いま追加したスタートアップ・クラス(本稿の例では「WinApp2003.Program」)をスタートアップ・オブジェクトとして(本稿の例では「WinApp2003.Program」)を指定しておく。


プロジェクトのプロパティで、スタートアップ・オブジェクトを指定する。

 最後に、VBの場合と同様に、ツールボックスからコントロールを配置して、デザイナ・ファイルにコントロールの記述が追加されるか確認しておく。End of Article

カテゴリ:C# 処理対象:プロジェクト
カテゴリ:Visual Basic 処理対象:プロジェクト

この記事と関連性の高い別の.NET TIPS
VS.NET 2003プロジェクトをVS.NET 2002で開くには?
コントロールのメンバ変数を自動生成させないようにするには?
Windowsフォームで簡単に画像を表示するには?
VB.NETでアプリケーション起動時に実行されるフォームを変更するには?
[ASP.NET]ページから生成されたソース・コードを見るには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間