Запретить Visual Studio обновлять определенные строки в Form.Designer.cs - PullRequest
0 голосов
/ 16 апреля 2011

Мне было интересно, возможно ли запретить Visual Studio обновлять определенные строки, которые я изменил?Например, у меня есть отдельный проект только для ресурсов (изображения, звуки и т. Д.).Я изменяю несколько строк в Form.Designer.cs и делаю так, чтобы все изображения загружались из ресурса dll.Но как только я обновляю саму форму, все возвращается к значениям по умолчанию, и все ресурсы, которые использовались формой, копируются в файл Form.resx.
Как я могу решить эту проблему?

Ответы [ 3 ]

3 голосов
/ 16 апреля 2011

Нет.

Как указано в начале файла, *.Designer.* является автоматически сгенерированным файлом. Он перестраивается каждый раз, когда файл, от которого он зависит, сохраняется, поэтому вам никогда не следует менять там код, который вы не хотите испортить.

2 голосов
/ 16 апреля 2011

Предпочтительно отделить код, который генерирует дизайнер форм, от кода, над которым вы хотите иметь некоторый контроль.Порядок, в котором вам нужно обратиться к этому коду, может быть обработан в конструкторе формы.Пример:

namespace FormTest
{
    public partial class Form1 : Form
    {
        private Label PostAddedLabel;

        public Form1()
        {
            InitializeComponent();
            PostInitializeComponents();
        }

        private void PostInitializeComponents()
        {
            if (!this.DesignMode)
            {
                PostAddedLabel = new Label();
                PostAddedLabel.Left = 100;
                PostAddedLabel.Top = 30;
                PostAddedLabel.Text = "The Post-added Label";

                this.Controls.Add(PostAddedLabel);
            }
        }
    }
}

Мы можем просто спроектировать форму в конструкторе, после успешного этапа проектирования мы можем переместить объявление, назначения и связанный код, который мы хотим разделить с методом PostInitializeComponents.

Используя решение! This.DesignMode, форма отобразит отдельные элементы управления в режиме выполнения.В режиме конструктора эти элементы управления не будут отображаться, гарантируя, что система не повлияет на эти элементы управления при разработке формы.

Если вы хотите использовать эту методологию также в пользовательских элементах управления, попробуйте встроить «IsDesignerHosted»."Метод над" DesignMode "из следующей статьи: DesignMode с элементами управления

Надеюсь, это ответ на вопрос?

0 голосов
/ 16 апреля 2011

Нет. Visual Studio не «обновляет» файл Designer, он удаляет его и записывает все новые копии. Невозможно сделать то, что вы хотите.

Вы должны добавить свой код к своему коду. Это тот же класс.

...