Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Разработка 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 |
Вариант с экстендером интересный. Насколько я понимаю, некоторые компоненты (тултип например) так работают. Если получится, расскажи как всё делал. ![]() |