2014-10-12 5 views
1

Использование VS2013 Pro, WinForms, отладчик продолжает удалять мои обработчики событий. (Я помещаю их в файл Form.Designer.cs)Почему отладчик удаляет мой код?

Я только начал замечать это недавно, и я уверен, что я не изменил никаких настроек.

Может ли кто-нибудь еще воспроизвести это или это что-то в моей системе?

Шаги для репликации:

  1. Создать новый проект C WinForms
  2. # Добавить раздвоение контейнер> Внутри панели два Базового контейнера, гнездо другой раскол контейнера.
  3. В файле Form.Designer.Cs подключите обработчик события Click к контейнеру вложенной панели 1.
  4. Run. -Открыть контейнер - должен работать нормально.
  5. Выход из отладчика> Изменить свойство цвета панели гнезда 1.
  6. Запустить> Не можете больше нажать?
  7. Код проверки> Обработчик событий удален?
+6

'Form.Designer.cs' Это тот, который говорит« не изменять »? Что произойдет, если вы поместите код в 'Form.cs' –

+0

Да, я знаю, но я всегда писал код там! Держится аккуратно. – KidCode

+5

@KidCode И вы не думаете, что прислушаться к предупреждениям о том, что файл не следует изменять вручную, было бы хорошей идеей? – Dan

ответ

4

Если вы добавили обработчик событий вручную, то в любое время изменить что-то от дизайнера Form.Designer.cs регенерируется и удалять обработчики событий (те, добавленные вручную в коде)

Что вы необходимо добавить обработчик событий из свойств Control.

Например, если вы код это в конструкторе:

myControl.Click += myClickHandler; 

он будет удален в любое время изменить что-то в конструкторе, потому что весь .Designer.cs файл регенерируется и по какой-то причине VS является не зная о обработчиках событий, добавленных вручную.

Вы, увидите, что если добавить обработчик событий из окна свойств управления (в конструкторе) сгенерированный код будет выглядеть следующим образом:

myControl.Click += new EventHandler(myClickHandler); 

Другим решением является добавление обработчика снаружи. Designer.cs, но простой способ - добавить обработчик из Designer :).

Смежные вопросы