Эта проблема заставила меня почесать голову!Я постараюсь быть как можно более кратким.
На высоком уровне:
Проблема в том, что, хотя проект работает нормально, и код выглядит хорошо для меня,Всякий раз, когда я редактирую и создаю определенные формы, Visual Studio перезаписывает файлы *.Designer.cs
очень нежелательным образом.
Я совершенно уверен, что эти *.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.
Есть идеи, почему это происходит?