2013-10-04 2 views
0

Я использую свойство PropertyGrid.SelectedObjects (свойство управления Winform) для отображения свойств нескольких объектов. У меня есть пользовательский дескриптор для каждого свойства каждого объекта, который выполняет базовую проверку и выполняет бизнес-логику.Как добиться единственной проверки для изменения свойств нескольких объектов

Я хотел бы выполнить только один раз бизнес-логику только тогда, когда будут выполнены все проверки. Как нам это сделать?

Редактировать

PropertyGrid управления, когда значение устанавливается автоматически использует MergedPropertyDescriptor, который вызывает функцию SetValue моего пользовательского дескриптора в цикле, что приводит к множественным бизнес-логики вызова. Что я хочу, чтобы избежать этого без использования каких-либо статической переменной

Edit2 Этот вопрос также размещен в Microsoft Forums

ответ

0

Самый простой:

myForm.submit = function() { 
    if (checkValidation()) { 
    // business logic; 
    if (OK) return true; 
    } 
    return false; 
}; 

Я, лично, предпочел бы просто использовать метод submit в качестве оболочки (внутренний оператор if [when true] будет вызывать другую функцию [бизнес-логика], которая возвращает true или false).

+0

метод отправки (см. Выше) может, конечно, быть изменен на событие клика для элемента кнопки или любого обработчика событий, который вы хотите для yoru «SelectedObjectes». Я всегда ошибаюсь в последнем заявлении «return false». Это не только делает ваш код более чистым, но если что-то, что вы пропустили в валидации, плохо работает, вы всегда будете возвращать false. В приведенном выше примере только функции, возвращающие true, пройдут проверку и бизнес-логику. –

+0

Я не знаю, как это будет в моем случае. Я обновил свой вопрос, чтобы предоставить дополнительную информацию. – keyr

Смежные вопросы