Visual Studio でアプリを開発する場合、「リソース デザイナー」を使ってリソースファイルを管理することができます。
リソース デザイナーを使うことで、文字列やイメージ、ファイル等のリソースの追加や削除が簡単に行うことができます。
また、リソースファイルを使ってアプリケーションの表示言語を切り替えること(多言語化対応)が可能です。
この記事では、リソースファイル(*.resx)を管理する方法を画像を用いて分かりやすく解説しています。
ぜひ、この記事を参考にリソースファイルを管理してみて下さい。
オススメの参考書
C#の使い方が丁寧に解説しており、「基礎からしっかりと学びたい」という初心者の方にオススメの一冊です。サンプルコードも記載してあり、各章の最後に復習問題があるので理解度を確認しながら読み進めることができます。新しい C# のバージョンにも対応している書籍です。
リソースファイルとは
リソースファイルとは、アプリケーションの一部であり、コンパイルされていないファイルの事です。例えば、アイコンファイルやオーディオファイルがリソースファイルに該当します。
Visual Studio では「リソース デザイナー」という UI ツール(Visual Studio 2005以降から使用できる)を使って、プロジェクトのリソースを作成および管理することができます。このツールで作成されたリソースファイルは、プロジェクトの「Properties」フォルダに追加されます。
下図はリソース デザイナーの画面です。
リソース デザイナーは、文字列、イメージ、アイコン、オーディオ、およびファイルなどの種類のリソースをサポートしています。
リソース | データ型 | 対象データ |
---|---|---|
文字列 | string | 文字列をリソースとして設定できます。リソース デザイナーでは[名前]、[値]、[コメント]が入力できる各列が有ります。 |
イメージ | byte[] (Bitmap) | イメージファイル(*.bmp / *.jpg / *.gif 等)をリソースとして設定できます。 |
アイコン | byte[] (Icon) | アイコンファイル(*.ico)をリソースとして設定できます。 |
オーディオ | UnmanagedMemoryStream (byte[]) | サウンドファイル(*.wav)をリソースとして設定できます。wavの場合、リソースの種別は「オーディオ」となり、 UnmanagedMemoryStream として取得できます。mp3の場合、リソースの種別は「ファイル」となり、byte[] として取得できます。 |
ファイル | Text … string Binary … byte[] | 上記のカテゴリ以外のファイルをリソースとして設定できます。ファイルの形式によってデータ型が異なります。 |
その他 | ー | 文字列シリアル化をサポートするその他のデータ(Font / Enum / Color / Point 等)をリソースとして設定できます。 |
文字列リソースは、アプリケーションの多言語対応で利用されることがあります。アプリケーションの表示言語を日本語以外の英語や中国語に切り替えることが可能になります。
リソースファイルを追加する方法
ここでは以下の環境でリソースファイルの追加を行います。
プロジェクトの開発環境
項目 | 内容 |
---|---|
開発環境 | Visual Studio 2022 |
プロジェクト | WPF アプリケーション |
フレームワーク | .NET 7」 |
Visual Studio のプロジェクトを開きます。続いて、ソリューションエクスプローラーからプロジェクトのプロパティを開きます。
左のサイドメニューから[リソース] -> [全般]の順に選択を行い、[アセンブリ リソースを作成する/開く]ボタンをクリックします。
プロジェクトに「Properties」フォルダが作成され、そのフォルダ内に「Resources.resx」が作成されます。
各リソースを追加する方法
先ほど追加したリソースファイルに各種リソースを追加するには、リソース デザイナーを使います。
リソース デザイナーを表示するには、ソリューションエクスプローラーの[Properties] -> [Resources.resx]をダブルクリックします。
リソース デザイナーの左上にあるドロップダウンリストから追加する各種リソースの選択を行います。
文字列リソースの追加
文字列リソースを追加する場合は、左上のドロップダウンリストから「文字列」を選択します。「Ctrl」+「1」でも選択が可能です。
下図は文字列のリソースを追加する画面です。左上付近にある[リソースの追加]ボタンをクリックします。
「名前」と「値」は必須の入力欄で、入力が完了しないと次のリソースを追加することができません。「コメント」の入力は任意です。
文字列リソースを追加したら、[保存]ボタンをクリックしておきましょう。
登録したリソースはソースコードから読み込みができます。読み込み方法は次の章に記載しています。
イメージリソースの追加
イメージリソースを追加する場合は、左上のドロップダウンリストから「イメージ」を選択します。「Ctrl」+「2」でも選択が可能です。
下図はイメージのリソースを追加する画面です。
画像ファイル(.bmp / .jpg / .gif 等)をドラッグ&ドロップで追加します。
登録したリソースはプロジェクトの「Resources」フォルダ内にコピーされます。また、登録したリソースはソースコードから読み込みができます。読み込み方法は次の章に記載しています。
アイコンリソースの追加
アイコンリソースを追加する場合は、左上のドロップダウンリストから「アイコン」を選択します。「Ctrl」+「3」でも選択が可能です。
下図はアイコンのリソースを追加する画面です。
アイコンファイル(.ico)をドラッグ&ドロップで追加します。
登録したリソースはプロジェクトの「Resources」フォルダ内にコピーされます。また、登録したリソースはソースコードから読み込みができます。読み込み方法は次の章に記載しています。
オーディオリソースの追加
オーディオリソースを追加する場合は、左上のドロップダウンリストから「オーディオ」を選択します。「Ctrl」+「4」でも選択が可能です。
下図はオーディオのリソースを追加する画面です。
オーディオファイル(.wav)をドラッグ&ドロップで追加します。
登録したリソースはプロジェクトの「Resources」フォルダ内にコピーされます。また、登録したリソースはソースコードから読み込みができます。読み込み方法は次の章に記載しています。
ファイルリソースの追加
ファイルリソースを追加する場合は、左上のドロップダウンリストから「ファイル」を選択します。「Ctrl」+「5」でも選択が可能です。
下図はファイルのリソースを追加する画面です。
テキストファイル等のファイルをドラッグ&ドロップで追加します。
登録したリソースはプロジェクトの「Resources」フォルダ内にコピーされます。また、登録したリソースはソースコードから読み込みができます。読み込み方法は次の章に記載しています。
各リソースを取得する方法
上記の手順で追加されたリソースを取得するには、Properties の名前空間にある Resources クラスを使います。このクラスの中にリソース名を同じ名前の静的プロパティがあるので、そのプロパティから値を取得します。
文字列リソースの取得
文字列リソースを取得するサンプルです。
// 文字列リソースの取得
string item1 = Properties.Resources.Item1;
string item2 = Properties.Resources.Item2;
string item3 = Properties.Resources.Item3;
// 取得した文字列リソースの出力
Debug.WriteLine(item1);
Debug.WriteLine(item2);
Debug.WriteLine(item3);
実行した結果は次の通りです。
アイテム1
アイテム2
アイテム3
イメージリソースの取得
イメージリソースを取得して、Image コントロールに描画するサンプルです。
// 文字列リソースの取得
byte[] bytes = Properties.Resources.Sample;
// byte[]を画像データへ変換
var stream = new MemoryStream(bytes);
stream.Seek(0, SeekOrigin.Begin);
var bitmapImage = new BitmapImage();
bitmapImage.BeginInit();
bitmapImage.StreamSource = stream;
bitmapImage.EndInit();
// ImageコントロールのSourceプロパティへ設定
Image1.Source = bitmapImage;
実行した結果は次の通りです。
アイコンリソースの取得
アイコンリソースを取得して、アプリケーションのアイコンを設定するサンプルです。プロジェクトのプロパティを開き、アイコンリソースのファイルパスを設定します。
アイコンの設定方法については次のリンクで詳しく説明していますので、参照してみて下さい。
実行した結果は次の通りです。
オーディオリソースの取得
オーディオリソースを取得して、オーディオリソースを再生するサンプルです。
// オーディオリソースの取得(wavファイルの場合)
UnmanagedMemoryStream sound = Properties.Resources.AudioFile1;
// 取得したオーディオリソースを再生
var soundPlayer = new SoundPlayer(sound);
soundPlayer.Play();
上記のソースコードを実行すると、オーディオファイルが再生されます。
ファイルリソースの取得
ファイルリソースを取得するサンプルです。
// ファイルリソースの取得
string text = Properties.Resources.TextFile;
// 取得したファイルリソースの出力
Debug.WriteLine(text);
実行した結果は次の通りです。
TEST1
TEST2
TEST3
まとめ
この記事では、リソースファイルを管理する方法を紹介しました。
Visual Studio の UI ツールである「リソース デザイナー」を使うことで、文字列やイメージ、ファイルなどのリソースを追加したり、削除したりすることができます。
リソース デザイナーで追加したリソースは、Properties.Resources クラスの中に同じ名前の静的プロパティが作成されるので、プロパティから簡単に値を取得できます。
リソースデザイナーを活用して、リソースを管理しましょう。
以上、最後まで読んで頂きありがとうございました。