Похоже, что конструктор удаляет маркеры в файле designer.cs

Недавно я заметил, что дизайнер Visual Studio (я предполагаю, что он так и называется) удаляет некоторые из моих дескрипторов методов. Есть ли способ остановить этого дизайнера?

Пример того, что я имею в виду, заключается в следующем: у меня есть метод, когда моя MainForm закрывается, под названием MainForm_Closing - в основном это «Хотите сохранить изменения?» быстрый. В моем Main.designed.cs похоронена строка:

this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.MainForm_Closing);

в разделе, относящемся к моему объекту MainForm.

Но если я вношу какие-либо визуальные изменения в свою MainForm (перетаскивая на него элемент управления, редактируя имя метки, изменяя свойство изображения и т. Д.), Кажется, что часть Visual Studio, которая создает конструктор, стирает мой собственный код.

Я предполагаю, что конструктор вызывается для создания designer.cs во время компиляции (чтобы его можно было легко скомпилировать в IL) и, следовательно, как само собой разумеющееся, удаляет мои пользовательские дескрипторы.

Кстати: я создаю свои собственные дескрипторы, которые создаются с помощью IntelliSense. Например, я печатаю:

this.FormClosing +=

и IntelliSense предлагает правильный дескриптор и говорит: «Нажмите TAB, чтобы вставить»).

Любая помощь в понимании этого (и предотвращение удаления моих дескрипторов Visual Studio) была бы очень признательна.


person Jamie Taylor    schedule 26.01.2012    source источник
comment
Вы добавляете код в designer.cs?   -  person Tomas Voracek    schedule 26.01.2012
comment
Вы добавили обработчик событий из панели свойств или непосредственно в файл * .designer.cs? PS На аналогичный вопрос дан хороший ответ. stackoverflow.com/questions/3786512/   -  person Lloyd    schedule 26.01.2012
comment
Обрабатывает только такие методы, как FomrClosing, TreeView.MouseClick и т. Д. Я так понимаю, мне следует добавить этот код в другое место?   -  person Jamie Taylor    schedule 26.01.2012
comment
Да, добавьте обработчики событий в панель свойств, а не непосредственно в файл конструктора.   -  person Lloyd    schedule 26.01.2012


Ответы (2)


Как упоминалось в файле .Designer.cs, вам не следует изменять код в Windows Form Designer generated code region, поскольку он автоматически создается и перезаписывается Visual Studio при каждом изменении формы.

    /// <summary>
    /// Required method for Designer support - do not modify
    /// the contents of this method with the code editor.
    /// </summary>

Чтобы добавить обработчики к событиям ваших элементов управления, используйте диалоговое окно «Свойства»: введите здесь описание изображения

person ken2k    schedule 26.01.2012

Вы не должны изменять конструктор .cs, поверх файла даже добавлен комментарий, который, кстати, сгенерирован каким-либо инструментом. Каждый раз, когда вы вносите изменения в конструктор, файл designer.cs регенерируется, поэтому никогда не помещайте туда свой собственный код.

Ваш собственный код должен быть в MainForm.cs или каком-нибудь частичном файле класса. Никогда не изменяйте файлы designer.cs, потому что ваш код будет потерян в следующий раз, когда вы откроете конструктор.

person Tomas Voracek    schedule 26.01.2012