Конструктор форм Winforms vs Load - PullRequest
9 голосов
/ 05 ноября 2008

Когда форма загружается, код должен выполнять такие вещи, как настройка сетки данных, выпадающих списков, задание заголовка и т. Д. Я склонен всегда использовать событие загрузки, а не новое (конструктор). Существуют ли руководящие указания, какие из них лучше всего подходят для каких видов деятельности?

Ответы [ 3 ]

2 голосов
/ 05 ноября 2008

Вызов InitializeComponent автоматически вставляется в конструктор вашей формы / страницы. InitializeComponent - это автоматически сгенерированный метод, который

  • создает различные элементы интерфейса на вашей странице winform / XAML
  • инициализирует их свойства значениями, хранящимися в файле ресурсов

Таким образом, все, что связано с расположением / модификациями пользовательского интерфейса, должно идти после этого вызова. Когда вы делаете это в переопределении Form.OnLoad, вы уверены, что пользовательский интерфейс готов к работе (был вызван InitializeComponent) ... поэтому я бы проголосовал за то, чтобы придерживаться OnLoad для пользовательского интерфейса.
Создавая элементы, не относящиеся к пользовательскому интерфейсу, конструктор был бы местом, на которое я бы сначала посмотрел.

1 голос
/ 05 ноября 2008

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

Форма frm = новая форма ();

Принимая во внимание, что что-либо в событии Load произойдет, только если форма показана , т.е. frm.Show ();

0 голосов
/ 05 ноября 2008

По сути, вы хотите, чтобы ваш конструктор был максимально легким. Я пытаюсь поместить большинство вещей в обработчик событий Load, поскольку элементы пользовательского интерфейса созданы и могут использоваться в настоящее время. Тем не менее, я обычно создаю экземпляры объектов класса и т. Д. В конструкторе, поскольку это фактически является частью конструирования объекта. Иногда вы не можете поместить вещи в одно место или другое, но для тех времен, когда вы можете, вы должны просто положить их туда, где это кажется наиболее подходящим.

...