Ce problème m'a laissé me gratter la tête! Je vais essayer d'être aussi concis que possible.Designer forçant les ressources à être incorporées dans le formulaire, plutôt que d'utiliser Resources.resx?
Sur un niveau élevé:
Le problème est que même si le projet fonctionne très bien et le code me semble bon. Chaque fois que j'édite et crée certains formulaires, Visual Studio réécrit les fichiers *.Designer.cs
d'une manière qui n'est pas souhaitable. Je suis assez confiant que ces fichiers *.Designer.cs
n'ont pas été édités (en particulier la partie générée automatiquement) dans le passé.
De façon plus détaillée:
Notre projet utilise des contrôles personnalisés, certains qui héritent de PictureBox
. Sur les formulaires où ces contrôles sont présents, si je vois le fichier *.Designer.cs
, je vois soit que la propriété Image
n'est pas définie, soit la propriété Image
fait référence à une image stockée dans le fichier resx du projet comme ci-dessous, ce qui est très bien .
this.customButton.Image = global::MyProject.Properties.Resources.buttonImage;
Cependant, si je modifie simplement ce formulaire en ajoutant un autre contrôle (faites glisser un autre bouton sur la forme) et construire le projet, Visual Studio édite intensivement les fichiers MyForm.Designer.cs
et MyForm.resx
, même pour les contrôles existants sur le formulaire qui n'ont pas été touchés. Il semble qu'il intègre toutes les images nécessaires par les contrôles dans le fichier MyForm.resx
et se réfère ensuite à eux dans le MyForm.Designer.cs
comme suit:
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MyForm));
this.customButton.Image = ((System.Drawing.Image)(resources.GetObject("customButton.Image")));
Ceci est évidemment pas ce que je veux. Pourquoi Visual Studio souhaite-t-il que le formulaire utilise maintenant une ressource locale au lieu de celle incorporée dans le fichier Resources.resx
du projet, comme il était content de le faire avant la modification du formulaire? Si je vais au concepteur, voir les propriétés du customButton
, et essayez de définir la propriété Image à l'image dans le fichier de ressources du projet, il le permet, mais sur le clic suivant, il va immédiatement revenir à la référence locale intégrée dans MyForm.resx.
Des idées pour lesquelles cela se passe?