3


0

カルチャを変更せずに、c#winformアプリのリソースファイルを変更するにはどうすればよいですか?

しばらく開発中のwinformアプリがあります。 ブランド化されたエクスペリエンスを作成する複数の画像とコントロールカラーがあります。 同じ製品を使いたいが、ブランドが異なる2番目の顧客がいます。

したがって、control designer.csファイルには次のようなコード行があります。

this.BackgroundImage = global::MyNameSpace.Properties.Resources.background;

文化を変更し、異なる画像を含む個別のリソースファイルを作成できるため、リソースファイルを使用する方法のようです。

しかし、文化を変更したくない(日付、通貨などの表示を変更したくない)だけで、においがします。

カルチャを変更せずに、実行時またはコンパイル時にリソースファイルを手動で変更できますか?

この結果を達成するためのより良い方法はありますか?

また、リソースファイルを使用してコントロールの色を設定するにはどうすればよいですか(例: すべての背景を黒から赤に変更しますか?)

2 Answer


1


リソースを持っていた別のファイルからリソースを読み込むことができます(ただし、グローバル化されたサテライトアセンブリメカニズムには依存しません)。 メインアセンブリをフォールバックとしてデフォルトリソースをコンパイルすることもできます。

Resgen.exeを使用して、。resx_ファイルなどから.resources_ファイルを作成できます。 `ResourceManager`を使用して読み取ります:

//note that resourceFilename does NOT include the ".resources" extension
var rm = ResourceManager.CreateFileBasedResourceManager( resourceFilename
                                                        ,resourceDir
                                                        ,null);
this.BackgroundImage = (Image) rm.GetObject("background");


0


検討できるオプションの1つは、カスタムカルチャを作成することです。たとえば、次のようなカルチャを作成できます。

ClientA-fr-FR
ClientB-fr-FR

それぞれのリソースを作成すると、スレッドカルチャを適切に設定できるはずです。

リンクはこちらですhttp://msdn.microsoft.com/en-us/library/ms172469.aspx ["方法:カスタムカルチャを作成"]