Установка значений свойств типа из динамических элементов управления пользовательского интерфейса - PullRequest
0 голосов
/ 28 марта 2012

У меня есть бизнес-уровень с пространством имен, которое называется Products.Итак: Business.Products

Используя Reflection, я загружаю все типы (кроме базовых, а не абстрактных) в комбинированный список и ожидаю, что пользователь выберет тип (Книга, Еда, Медицина, Другое: все наследуется отКласс ProductBase) и установите его свойства и добавьте в глобальный объект Order, который содержит список ProductBase.

Пока что я выбираю тип из выпадающего списка, а внизу групповой блок заполняется соответствующими элементами управления пользовательского интерфейса, CheckBox дляbool prop, DateTimePicker для datetime, TextBox для бесплатного входа и так далее.(Я помещаю экземпляр propertyinfo в свойство Tag элемента управления btw)

Когда дело доходит до добавления нового свойства после того, как установлены пользовательские интерфейсы ctrls, я создаю новый объект выбранного типа и начинаю устанавливать его свойства.Чтобы найти корректный пользовательский интерфейс ctrl, я перебираю элементы управления в groupBox и использую свойство Tag, содержащее экземпляр PropertyInfo.Пока нет проблем с поиском соответствующего элемента управления.Но элементы управления имеют разные типы (я возвращаю элементы управления из закрытого метода, который возвращает System.WinForms.Control), и мне нужно получить доступ к его свойству SelectedDate, если его DatePicker, IsChecked, если его CheckBox, и так далее.Честно говоря, я не знаю, что делать сейчас :), пожалуйста, помогите брату, спасибо, заранее.Peace!

Примечание. Я вижу, что большинство элементов управления имеют значение Text, даже если его текстовое значение DatePicker выглядит как дата, но не думаю, что я действительно могу использовать это.

PS: На самом деле это известный вопрос для собеседования, но я хочу этот подход Reflection, чтобы поддерживать все виды будущих сообщений со структурой наследования и перемещением / добавлением / удалением свойств.проверьте здесь сам вопрос: http://codecrafter.blogspot.com/

1 Ответ

1 голос
/ 28 марта 2012

Использовали ли вы элемент управления PropertyGrid?В нем уже есть такие вещи. Кроме того, это типичный способ Windows Environment для таких вещей.Он также очень хорошо взаимодействует с пространством имен System.ComponentModel, так что вы можете делать такие вещи, как редактировать способ маркировки каждого свойства, описание, допустимые значения ...

Кроме того, имейте в виду, что отражение несколько медленное, поэтому яне будет делать это в больших масштабах.

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