Показать динамически созданные элементы управления в конструкторе Windows Forms - PullRequest
0 голосов
/ 19 февраля 2012

Есть ли способ увидеть элементы управления, которые создаются с помощью кода в дизайнере мгновенно, но не только во время выполнения?

Ответы [ 2 ]

2 голосов
/ 19 февраля 2012

Конструктор Windows Forms применяет только свойства, содержащиеся в автоматически сгенерированном файле «Form1.Designer.cs» (пример имени файла для «Form1»).Если вы изменяете свойства (например, текст, цвет и т. Д.) Или создаете новые элементы управления в своем собственном коде, то есть в «Form1.cs», дизайнер не показывает его.

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

Опция 1 не работает, потому что оценка выражения работает только при запуске кода ... Что приводит нас к варианту 2: Разрешить ли дизайнеру запустить ваш код, чтобы узнать динамически добавленные свойства?Прежде всего, автоматический запуск ненадежного кода - это не то, что вам нужно.Во-вторых, должна быть причина, по которой вы вносите эти изменения динамически вместо статически в конструкторе, поэтому показ динамических изменений в виде WYSIWYG даже не имеет смысла.

1 голос
/ 19 февраля 2012

Дизайнер может отображать только те элементы управления, которые существуют во время разработки, или показывать примерные элементы управления для элементов управления с привязкой к данным. Если вы думаете о коде, который динамически создает во время выполнения текстовое поле или метку на основе переменной, как дизайнер узнает, какой из них отображать в режиме разработки?

Если у вас есть особая логика для отображения динамически созданных элементов управления в режиме разработки, вам придется создать пользовательский элемент управления и реализовать код рисования во время разработки. Это упоминается под заголовком Custom Design Experience здесь: http://msdn.microsoft.com/en-us/library/ms171725.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...