C # Событие для изменения других полей в Winform - PullRequest
0 голосов
/ 14 февраля 2019

Я создаю динамические формы в моем приложении.Я использую элементы управления DevExpress, такие как:

            NumericUpDown controlNumUpDown = null;
            DateEdit controlDateEdit = null;
            TextEdit controlTextEdit = null;
            LookUpEdit controlComboBox = null;
            SimpleButton controlButton = null;
            MemoEdit controlMemo = null;
            GridControl controlGrid = null;
            CheckBox controlCheckBox = null;
            CheckedListBoxControl controlCheckedListBoxControl = null;
            RadioGroup controlRadioGroup = null;
            LabelControl controlStaticText = null;

Теперь каждое значение элемента управления может полагаться на другое - когда поле видно или нет, включено или нет.

Итак, допустим, у нас есть дата редактирования (fieldId = 48) и LookUpEdit (выпадающий список).

Теперь Combobox определил динамический список как SQL-запрос, например:

Select * from indexes where inserted_date=Field.48.

Список элементов в поле со списком должен обновляться при изменении даты в другом элементе управления.То же самое касается текстовых редакторов: если Field.48 будет TextEdit, он должен работать аналогичным образом, то же самое относится и к другим типам полей, приведенных в коде после.

Берегите себя - это только пример, так как яупомянул, что каждый элемент управления может полагаться на другой, он может даже идти в бесконечный цикл, если пользователь плохо его определяет (мне все равно), так же, как одно поле может полагаться на 100 других полей.

Так что вопрос в том, чтособытие является лучшим для этого?До сих пор я использовал Leave Event каждого элемента управления, но он не работает, если элемент управления не включен или не виден.

Иногда требуется скрыть какое-то поле, например, totalOfDollars (NumericEdit), но все же другое полеНапример, флажок (если флажок важен для документа) может опираться на скрытое поле: amountOfDollars.

Есть предложения?(все ответы приветствуются, они могут быть неразрешимыми событиями ...)

1 Ответ

0 голосов
/ 14 февраля 2019

То, что вы пытаетесь сделать, не новая концепция.Вы пытаетесь создать систему из наблюдаемых свойств - это правильный подход и шаблон проектирования для вашего требования.

Google вокруг, а также посмотрите здесь: https://codereview.stackexchange.com/questions/132577/reactive-properties-for-easy-property-binding

Основная идея заключается в том, чтобы реагировать не на событие как таковое, а на изменения установщика свойств для определенных элементов управления.Многие сторонние компоненты предоставляют события типа OnChange для перехвата определенных изменений свойств, другие позволяют переопределить поведение установщика свойств.Иногда вам потребуется создать подкласс для стороннего элемента управления и подключить свои собственные обработчики.

Ваш вопрос очень широкий, но приведенный выше должен помочь направить вас в правильном направлении, даже если ссылка не указанаточно соответствует вашим потребностям.

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