上部の各 ToolStripButton に画像がある既存のフォームを持つアプリケーションがあります。これらの画像はresx
ファイル内にあり、このフォームでのみ使用できるように見えます。同じ画像で別のフォームを作りたいです。
これらの画像をインポートして、すべてのフォームで使用できるようにする適切な方法は何ですか? たとえば、ほとんどのフォームに [保存] ボタンと [開く] ボタンがあります。
上部の各 ToolStripButton に画像がある既存のフォームを持つアプリケーションがあります。これらの画像はresx
ファイル内にあり、このフォームでのみ使用できるように見えます。同じ画像で別のフォームを作りたいです。
これらの画像をインポートして、すべてのフォームで使用できるようにする適切な方法は何ですか? たとえば、ほとんどのフォームに [保存] ボタンと [開く] ボタンがあります。
作業中の大規模なプロジェクトでは、ユーザー コントロールとフォームを含む多くのプロジェクトを含むソリューションがあります。そのため、ソリューション全体のさまざまな種類のリソース (個別のリソース ファイル) を保持する Resources という 1 つの追加プロジェクトがあります。
リソースが必要なソリューション内の他のすべてのプロジェクトにプロジェクトを参照します。このようにリソースは別々に保持され、同じリソース名が使用されている限り、dll を簡単に置き換えることができ、何も壊れることはありません。
また、たとえば同じイメージが必要な完全に異なるプロジェクト (ソリューション) で dll アセンブリを使用します。正しく名前を付けると (たとえば、Company.Resources.dll -> Company.Resources.Images.Toolbar.Add/Remove/Settings)、すべての新しいプロジェクトにうまく適合します。
あなたの場合、同じリソースを使用するために ProjectB で ProjectA を参照することはもちろん可能ですが (プロジェクトが同じソリューション内にある限り)、これが常に可能であるとは限りません (たとえば、回避するために循環参照)。
新しい WinForm ソリューションを作成します (私の例では、2 つのプロジェクトを持つ 1 つのソリューション)。クラス ライブラリタイプの新しいプロジェクトを追加します。
resourcesプロジェクトに新しいリソースを追加します (文字列と画像の私の例では):
画像のリソース ファイルの追加:
いくつかの画像を追加します:
リソース プロジェクトを他のプロジェクトから参照します。
重要=> アセンブリの外部からリソースを使用するには、可視性を public に設定する必要があります。
ソリューションを一度コンパイルすると、どこからでも参照リソース プロジェクトを使用できます。