2015-10-26 3 views
0

Я прошел через несколько ресурсов, пытаясь найти варианты использования, когда вручную добавлять код в InitializeComponent, но не нашел ничего конкретного. Это говорит о том, что мы не должны этого делать. The code within the method 'InitializeComponent' is generated by the designer and should not be manually modifiedРедактирование метода InitializeComponent() C#

В прошлом я всегда использовал конструктор форм и не нуждался в том, чтобы вручную вносить изменения в InitializeComponent(). Однако в моей новой фирме технический лидер полностью проигнорировал конструктор форм и вручную добавил большинство элементов пользовательского интерфейса в InitializeComponent (то есть он либо был сильно отредактирован, либо полностью переписан в той мере, в какой конструктор не может воссоздать GUI в VS, но графический интерфейс отображается и полностью функционирует при выполнении кода)

В чем преимущество использования конструктора форм? Это только вопрос предпочтения? Является ли вручную редактирование/переписывание InitializeComponent для простых элементов пользовательского интерфейса хорошей практикой?

Спасибо!

+1

Насколько я могу судить, два основных недостатка: вы теряете представление «Дизайн», поэтому не знаете, как будут выглядеть компоненты, и, что еще хуже, любая перестройка кода может убрать все пользовательские изменения. ИМО это действительно плохой выбор тем, кто действительно не знает или не понимает последствия –

+0

Я бы этого не сделал. Интересно, в чем причины, по которым они это делали. В основном за пределами вашего дизайнера. –

+1

Редактировать код можно будет быстрее. Редактирование его до такой степени, что дизайнер не может его правильно разобрать, - это, конечно, грубость для всех остальных в команде, которая предпочитает использовать конструктор. Это то, что ваша команда должна исправить, никто здесь не может помочь вам в этом. –

ответ

2

Есть только несколько причин, почему один, возможно, потребуется изменить InitializeComponent, такие как:

  1. Чтобы исправить ошибки, внесенные плохой дизайнер инструментов пункт.
  2. Удалить все следы элемента управления, который нельзя удалить из конструктора VS. (Это нужно сделать осторожно.)
  3. Чтобы сделать «удобные для дизайнера» настройки: изменение значения свойства, добавление свойства или удаление параметра свойства. При добавлении параметра я уверен, что он выглядит так же, как созданный конструктором код.

После редактирования InitializeComponent, я всегда сохраняю &. Вернитесь в режим конструктора, чтобы убедиться, что я ничего не сломал.

Любой код инициализации вручную должен быть добавлен за пределы InitializeComponent, например. OnLoaded() в форме WinForms или пользовательском контроле. Что касается фиксации существующих форм, это может быть простым или почти невозможным в зависимости от того, насколько сложна форма, особенно если элементы управления были добавлены вручную, и требуемые методы инициализации (такие как SuspendLayout, BeginInit) не вызываются.

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