プログラムのさまざまな部分で簡単に参照および使用できるリソースを作成するにはどうすればよいですか?
私の特定の問題は、プログラムの状態に応じてアイコンを変更したいNotifyIconがあることです。よくある問題ですが、長い間苦労してきました。
プログラムのさまざまな部分で簡単に参照および使用できるリソースを作成するにはどうすればよいですか?
私の特定の問題は、プログラムの状態に応じてアイコンを変更したいNotifyIconがあることです。よくある問題ですが、長い間苦労してきました。
回答:
まあ、StackOverflowのあちこちでさまざまなポイントを検索してまとめたところ(いや、私はすでにこの場所が好きです)、ほとんどの問題はすでにこの段階を過ぎています。私は問題の解決策をなんとか作り出した。
リソースを作成する方法:
私の場合、アイコンを作成したいと思います。リソースとして追加するデータのタイプに関係なく、これは同様のプロセスです。
リソースの使用方法:
すばらしいので、新しいリソースを入手し、素敵なアイコンを変更したいと思っています。どうすればよいですか?まあ、幸運なことに、C#はこれを非常に簡単にします。
Properties.Resources
すべてのリソースにアクセスできるようにする静的クラスが呼び出されるため、コードは次のようにシンプルになりました。
paused = !paused;
if (paused)
notifyIcon.Icon = Properties.Resources.RedIcon;
else
notifyIcon.Icon = Properties.Resources.GreenIcon;
できた!完成しました!方法を知っていれば、すべてが簡単ですよね。
上記は、Visual Studio 2010で期待したように実際には機能しませんでした。これにより、Properties.Resourcesにアクセスできなくなり、アクセス許可の問題によりアクセスできなくなったとのことです。最終的にはリソースのプロパティで永続性の設定を変更する必要があり、Resources.Designer.csファイルを介してアクセスする方法を見つけました。そこには、MyNamespace.Properties.Resourcesを介してアイコンにアクセスできる自動ゲッターがありました。 .NameFromAddingTheResource。これにより、アイコンタイプのオブジェクトが返され、すぐに使用できます。
上記の方法はうまくいきます。
別の方法(ここではWebを想定しています)は、ページを作成することです。ページにコントロールを追加します。次に、デザインモードで[ツール]> [ローカルリソースの生成]に移動します。リソースファイルはソリューション内に自動的に表示され、ページ内のすべてのコントロールがリソースファイルにマップされます。
他の言語のリソースを作成するには、拡張子の前のファイル名の最後に4文字の言語を追加します(Account.aspx.en-US.resx、Account.aspx.es-ES.resx ...など)。
コードビハインドの特定のエントリを取得するには、次のメソッドを呼び出しますGetLocalResourceObject([resource entry key/name])
。