プロが教える店舗&オフィスのセキュリティ対策術

.NETでWinFormアプリをC#で製作中です。
Visual Studio Community 2017を使用しています。

VisualStudioのプロパティ>リソースで、画像を20個くらい読み込んでおり、条件に応じてその画像をPictureBox1のImageプロパティで表示を切り替えようとしています。

画像を管理している string 型の変数 s が "apple" だったら、リソース内の画像「apple」を表示する、といったようなことがしたいのですが、リソース内の画像を使用する方法は下記のような感じですよね。

PictureBox1.Image = Properties.Resources.画像名

しかしこれを
string s = "apple";
PictureBox1.Image = Properties.Resources.s;

というようには指定できず困っています。
s には "orange" や "banana" などの単語が入り、表示させたいリソース内の画像と名前が一致している状態です。
こういう場合どう記述すれば良いのでしょうか?

アドバイスありましたらぜひお願いします。m(_ _)m

質問者からの補足コメント

  • Tacosanさんすみません、早とちりしていました!
    こちらの方法、試してみます。

      補足日時:2018/10/01 01:21
  • 試してみましたが、やはりリソース名をstringで取得できるだけのようです。。

      補足日時:2018/10/01 01:28
  • Tacosanさんが教えてくださったURL先も、GetObjectメソッドで取得してImage型にキャストしてあげれば良かっただけでこちらも正しかったのですね。
    失礼しました。。

    こちらの記事も見つかりました。

    リソースファイルからリソースを取得する
    https://dobon.net/vb/dotnet/programing/resourcem …

    ですがリソースが見つからないと例外が出るのは同様でした。
    初歩的なところで躓いてそうです。

    出力ウインドウはこちら。
    例外がスローされました: 'System.Resources.MissingManifestResourceException' (mscorlib.dll の中)
    プログラム '[79008] Test_ResourceImage.exe' はコード -1 (0xffffffff) で終了しました。

      補足日時:2018/10/01 02:50

A 回答 (3件)

    • good
    • 0
この回答へのお礼

Wr5さんご回答ありがとうございます。

「まさにこれ!」と思ったのですが、新しくプロジェクトを作成してボタンを押せばPictureBox1のImageが変わる簡単なもので試してみると‥

System.Resources.MissingManifestResourceException: '指定されたカルチャまたはニュートラル カルチャに対して適切なリソースが見つかりませんでした。 "WindowsApplication1.Properties.Resources.resources" が適切に埋め込まれたか、実行時にアセンブリ "Test_ResourceImage" にリンクされたか、または必要なサテライト アセンブリが読み込まれて完全に署名されていることを確認してください。'

‥と例外が起きてしまいます。
ググってみたら「RootNameSpaceが原因」と出てはきますが、どうすればエラーが直るのか分からず引き続き困っております。orz

お礼日時:2018/10/01 02:31

>「RootNameSpaceが原因」と出てはきますが、どうすればエラーが直るのか分からず引き続き困っております。



新しいプロジェクト…ってことなら、「WindowsApplication1」ではないですよね?
プロジェクト指定になっちゃいますし。
# 正確にはnamespaceか?

#1の方法でResourceManagerは取得するべきでしょうね。


>リソースが見つからないと例外が出る

自前のリソースになければ当然かと。
隣の家の冷蔵庫の中身で料理はできませんよね?
    • good
    • 0
この回答へのお礼

>新しいプロジェクト…ってことなら、「WindowsApplication1」ではないですよね?

そのまんま「WindowsApplication1」で指定していたことが原因でしたorz
こちらをプロジェクト名に変えたらいけました!
恥ずかしい。。

ありがとうございます‥!

お礼日時:2018/10/03 01:43
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

リソース名で値を取得したい訳ではなくstringで指定したいのです。
教えていただいたURL先の方法で可能なのでしょうか?

お礼日時:2018/10/01 01:07

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!