この問題は私の頭を傷つけてしまった!私は可能な限り簡潔にしようとします。ハイレベルでは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.cs
とMyForm.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で。
これは何が起こっているのですか?