2011-10-21 4 views
2

この問題は私の頭を傷つけてしまった!私は可能な限り簡潔にしようとします。ハイレベルではDesignerはResources.resxではなく、フォームに埋め込まれるリソースを強制しますか?

問題は、プロジェクトが正常に動作し、コードは私にはよさそうだが、ということです。特定のフォームを編集してビルドするときは、Visual Studioは非常に望ましくない方法で*.Designer.csファイルを書き換えます。

これらのファイルが過去に編集されていない(特に自動生成された部分)ことは確かです。より詳細には

私たちのプロジェクトでは、カスタムコントロール、PictureBoxから継承したいくつかを使用しています。これらのコントロールが存在するフォームで、*.Designer.csファイルを表示すると、Imageプロパティが設定されていないか、Imageプロパティがプロジェクトのresxファイルに格納されている画像を参照しています。

this.customButton.Image = global::MyProject.Properties.Resources.buttonImage; 

私は単に別のコントロールを追加することによって、このフォームを変更(フォームに別のボタンをドラッグ)して、プロジェクトをビルドする場合は、Visual Studioが広範囲にさえ、フォーム上の既存のコントロールのために、MyForm.Designer.csMyForm.resxファイルを編集触られていない。 MyForm.resxファイルのコントロールが必要とするすべての画像を埋め込み、その後、次のようにMyForm.Designer.csでそれらを指しているようです:

System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MyForm)); 
this.customButton.Image = ((System.Drawing.Image)(resources.GetObject("customButton.Image"))); 

これは私が欲しいものは明らかではありません。 Visual Studioでは、フォームが変更される前にプロジェクトのResources.resxファイルに埋め込まれていたものではなく、現時点でローカルリソースを使用するフォームが必要なのはなぜですか?デザイナーに行って、customButtonのプロパティを表示し、プロジェクトリソースファイル内のイメージにImageプロパティを設定しようとすると、イメージプロパティは許可されますが、次のクリック時にすぐにローカルの参照に戻されますMyForm.resxで。

これは何が起こっているのですか?

答えて

3

私は、これは悪い選択であるように思われる、単一のアセンブリにアプリケーションのリソースを集中するためにいくつかの提言を見てきたにも関わらず、基本的にanother question

の助けを借りてこれを考え出しました。 VSデザイナーは、現在のアセンブリの外部にあるリソースにアクセスする必要がないだけでなく、そうしている間に、リソースを埋め込むことによって現在のアセンブリにそれらのリソースを持ち込むようにコードを変更します。単一のアセンブリ。

私は基本的に、リソースを使用するアセンブリにリソースを保存することに戻らなければなりませんでした。

関連する問題