Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка Windows Forms > пересчет полей на форме


Автор: jonie 5.5.2008, 23:31
возникла определенная потребность в пересчете данных на сложных формах. и очень бы не хотелось писать кучу кода вроде onValueChanged(...)
может быть есть какие-то типовые решения ?
подумывал относительно написания extender-а, куда бы вводил формы пересчета+"биндинг" полей ввода на переменные, учавствующие в расчете....
но может есть какие более изящные решения ?

Автор: mr.DUDA 6.5.2008, 10:42
Вариант - вынести весь код пересчёта в один общий метод и вызывать из обработчика form.Validating или типа того.

Автор: jonie 6.5.2008, 11:50
хм... это будет очень очень геморойно.
надобы че-нить типа maple встраивать) расчеты довольно сложны...

Автор: mr.DUDA 6.5.2008, 17:49
Хмм... Ну тогда завести что-ли базовый класс для контролов типа текстбокса, в котором добавить поле с выражением, а парсить ручками и брать значения через рефлекшн (или через отдельный слой объектов, где будут только значения и связи).

Автор: jonie 6.5.2008, 23:10
а в чем проблемы будут в extender-ом (типа errorprovider-а).
ему даем field - наименование поля откуда брать данные, формула : как считать, псевдоним этого контрола в формулах.

итого имеется : куча формул с привязкой на контролы(имя переменной) и значения этих контролов (значение переменной в формуле)... ну можно рассмотреть вариант с использованием Python, например, (iron python). там пропихивать в код питона можно ссылки(?) на .net типы....

тока я пока слабо представляю как ковырять это все в экстендере..... надо подробнее посмотреть как они реализуются). ну а там через этот extender расчет вести (он знает(?) о всех переменных в выражениях)....


вопрос имеет ли extender поятие к чему он привязан... (надо читать как реализуются)...


мнеб не хотелось наследоваться от объектов (много разнообразных элементов)...

Автор: mr.DUDA 7.5.2008, 09:13
Вариант с экстендером интересный. Насколько я понимаю, некоторые компоненты (тултип например) так работают. Если получится, расскажи как всё делал.  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)