.NETでリソースを作成して使用する方法


192

プログラムのさまざまな部分で簡単に参照および使用できるリソースを作成するにはどうすればよいですか?

私の特定の問題は、プログラムの状態に応じてアイコンを変更したいNotifyIconがあることです。よくある問題ですが、長い間苦労してきました。

回答:


325

まあ、StackOverflowのあちこちでさまざまなポイントを検索してまとめたところ(いや、私はすでにこの場所が好きです)、ほとんどの問題はすでにこの段階を過ぎています。私は問題の解決策をなんとか作り出した。

リソースを作成する方法:

私の場合、アイコンを作成したいと思います。リソースとして追加するデータのタイプに関係なく、これは同様のプロセスです。

  • リソースを追加するプロジェクトを右クリックします。ソリューションエクスプローラーでこれを行います。リストから「プロパティ」オプションを選択します。
  • 「リソース」タブをクリックします。
  • バーの上部にある最初のボタンで、追加するリソースのタイプを選択できます。文字列で始まる必要があります。アイコンを追加したいので、アイコンをクリックして、オプションのリストから「アイコン」を選択します。
  • 次に、2番目のボタン「リソースの追加」に移動します。新しいリソースを追加するか、すでにアイコンを作成済みの場合は、それも追加できます。選択したオプションのプロンプトに従います。
  • この時点で、新しく追加したリソースをダブルクリックして編集できます。リソースはソリューションエクスプローラーにも表示され、そこでダブルクリックすることも同様に効果的です。

リソースの使用方法:

すばらしいので、新しいリソースを入手し、素敵なアイコンを変更したいと思っています。どうすればよいですか?まあ、幸運なことに、C#はこれを非常に簡単にします。

Properties.Resourcesすべてのリソースにアクセスできるようにする静的クラスが呼び出されるため、コードは次のようにシンプルになりました。

paused = !paused;
if (paused)
    notifyIcon.Icon = Properties.Resources.RedIcon;
else
    notifyIcon.Icon = Properties.Resources.GreenIcon;

できた!完成しました!方法を知っていれば、すべてが簡単ですよね。


このおかげで、まったく同じものを探していました。.icoファイルを実行可能ファイルに埋め込み、個別のファイルとして表示されないようにする方法はありますか?私の質問が理にかなっているといいのですが。よろしく
お願いします

1
@Andrei:それがまさにリソースです。追加されると、コンパイルされたexeの一部として埋め込まれます。
Matthew Scharley、2011

1
「...問題のほとんどはすでにこの段階を過ぎています」-真実すぎる...これをまとめてくれてありがとう!私はそれが簡単であると知っていました...結局のところ。
roadsunknown、2012

1
補足として、リソースファイルはコンパイル時にロックされます。したがって、実行時にそれらを動的に変更しても、既存の値はほとんど変更されません。実行時に値を変更する場合は、構成ファイルを使用します。これが誰かを助ける場合。
Purusartha 2015年

1
VB.NETでは、リソースは、例えば「My.Resources.GreenIcon」を介してアクセスされている
アンディ・

9

上記は、Visual Studio 2010で期待したように実際には機能しませんでした。これにより、Properties.Resourcesにアクセスできなくなり、アクセス許可の問題によりアクセスできなくなったとのことです。最終的にはリソースのプロパティで永続性の設定を変更する必要があり、Resources.Designer.csファイルを介してアクセスする方法を見つけました。そこには、MyNamespace.Properties.Resourcesを介してアイコンにアクセスできる自動ゲッターがありました。 .NameFromAddingTheResource。これにより、アイコンタイプのオブジェクトが返され、すぐに使用できます。


7

上記の方法はうまくいきます。

別の方法(ここではWebを想定しています)は、ページを作成することです。ページにコントロールを追加します。次に、デザインモードで[ツール]> [ローカルリソースの生成]に移動します。リソースファイルはソリューション内に自動的に表示され、ページ内のすべてのコントロールがリソースファイルにマップされます。

他の言語のリソースを作成するには、拡張子の前のファイル名の最後に4文字の言語を追加します(Account.aspx.en-US.resx、Account.aspx.es-ES.resx ...など)。

コードビハインドの特定のエントリを取得するには、次のメソッドを呼び出しますGetLocalResourceObject([resource entry key/name])

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.