.NET TIPS

独自の.resxファイルの文字列リソースを活用するには?[2.0のみ、C#、VB]

デジタルアドバンテージ 一色 政彦
2007/02/15

 「TIPS:文字列リソースを活用するには?」では、.NET Framework 2.0を使って、Windowsアプリケーション内に文字列リソースを格納して、それを実行時に取り出して利用する方法を紹介している。しかし、この方法はVisual Studio 2005(以降、VS 2005)のプロジェクト・プロパティの[リソース]タブで入力したリソースについてのみ当てはまる内容である。.NET Framework 2.0+VS 2005では、プロジェクトに追加した独自の.resxファイルに格納されたリソースについても簡単に取り扱えるようにサポートされている(.resxファイルについてはTIPS:VS.NETで画像などのリソースを利用するには?(準備編)」を参照されたい)。

 そこで本稿では、.NET Framework 2.0で.resxファイルの文字列リソースを取り扱う方法について紹介する。C#とVisual Basic(以降、VB)で取り扱い方法が違う部分は、その違いについても言及する。

独自の.resxファイルへの文字列リソースの設定方法

 独自の.resxファイルに文字列リソースを格納するには、Visual Studio 2005のIDEを使って、任意のプロジェクトに対し.resxファイルを追加し、そのファイルをリソース・エディタで編集するだけである。

 これにはまず、ソリューション・エクスプローラなどから.resxファイル(=アセンブリ・リソース・ファイル)をプロジェクトに追加する。そして、その.resxファイルをダブルクリックするなどしてリソース・エディタで開き、そこに文字列リソースを入力していけばよい。入力の具体的な手順は次の画面を参考にしてほしい。

VS 2005での文字列リソースの入力
.resxファイルの文字列リソースを入力しているところ。独自の.resxファイルを作成するには、ソリューション・エクスプローラでプロジェクト項目を右クリックして、表示されるコンテキスト・メニューから[追加]−[新しい項目]を選択し、そこで表示される[新しい項目の追加]ダイアログで「アセンブリ リソース ファイル」という項目テンプレートを選択して.resxファイルを作成すればよい(ファイル名は何でもよい)。
  プロジェクトに追加された独自の.resxファイルをダブルクリックして、リソース・エディタで開く。
  それぞれの文字列リソースに対して名前を付ける(この例では「StringResource」)。プログラム中で文字列リソースを使う際には、ここで指定した名前でアクセスすることになる。
  文字列リソースの実際の文字列値。ここでは「Hello String Resource!」と入力した。
  後から見て分かりやすいように、「文字列リソースが何を示すのか」といったコメントを残せる。

 プロジェクトに追加された.resxファイルは自動的に「埋め込まれたリソース」としてビルドされ、プロジェクトが生成するアセンブリ(=.EXEファイルや.DLLファイル)にその文字列リソースが自動的に組み込まれる。

 組み込まれたリソースの名前については注意が必要だが、これは「TIPS:文字列リソースを活用するには?」での「組み込まれた文字列リソースのリソース名」という項目で説明されている命名規則と同じ内容であるため、本稿では説明を割愛する(※C#では、ルート名に「.<フォルダ名>」が入るが、フォルダがない場合には省略されるので注意すること)。

組み込まれた文字列リソースの活用方法

 それでは、実際に文字列リソースを使ってみよう。.NET Framework 2.0+VS 2005では、プロジェクトに追加された.resxファイルのリソースであっても、(プロジェクト・リソースの場合と同じように)非常に簡単にアクセスできるようになっている。

 次のコードは実際にアクセスしている例だ。

string 文字列リソース =
  global::WindowsApplication1.Resource1.StringResource;
Dim 文字列リソース As String = _
  My.Resources.Resource1.StringResource
組み込まれた文字列リソースにアクセスするコード(上:C#、下:VB)
C#の「global::」はなくてもよい。

 入力する際には(C#、VBともに)IntelliSenseが働く。

独自の.resxファイルのリソースでも働くIntelliSense(C#の例)
「WindowsApplication1」というプロジェクト(既定の名前空間は「WindowsApplication1」)に、「Resource1.resx」という独自の.resxファイルを追加した場合の例。「StringResource」は文字列リソースのキー名である。

 このアクセス方法は、「TIPS:文字列リソースを活用するには?」とほとんど同じである。具体的には、次の名前規則にのっとってアクセスできる。

  • C#:「<ルート名>.<キー名>」
  • VB:「My.Resources.<ファイル名>.<キー名>」

 C#の<ルート名>は「<既定の名前空間>.<フォルダ名>.<ファイル名>」で構成されるが、.resxファイルをプロジェクトのルート・フォルダに直接置いた場合には「.<フォルダ名>」は不要だ。

 VBの<ファイル名>とはプロジェクトに追加された.resxファイルの拡張子部分を抜いた名前である。End of Article

利用可能バージョン:.NET Framework 2.0のみ
カテゴリ:Windowsフォーム 処理対象:リソース
カテゴリ:クラス・ライブラリ 処理対象:リソース
関連TIPS:VS.NETで画像などのリソースを利用するには?(準備編)
関連TIPS:VS.NETで画像などのリソースを利用するには?(組込編)
関連TIPS:VS.NETで画像などのリソースを利用するには?(読込編)
関連TIPS:文字列リソースを活用するには?

この記事と関連性の高い別の.NET TIPS
文字列リソースを活用するには?
VS.NETで画像などのリソースを利用するには?(準備編)
VS.NETで画像などのリソースを利用するには?(読込編)
[ASP.NET AJAX]ローカリゼーション対応を行うには?(アセンブリ組み込み編)
文字列のリソースに改行コードを埋め込むには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム 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 記事ランキング

本日 月間