Кажется, что дизайнер удаляет дескрипторы в designer.cs - PullRequest
1 голос
/ 26 января 2012

Я недавно заметил, что дизайнер 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 от удаления моих дескрипторов)будет высоко ценится.

Ответы [ 2 ]

7 голосов
/ 26 января 2012

Как упоминалось в файле .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>

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

2 голосов
/ 26 января 2012

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

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

...