Я создал пользовательский CollectionEditor
, но я хочу проверить свою коллекцию, когда пользователь нажимает кнопку «ОК». Я попытался следующие:Как проверить коллекцию в пользовательском сборнике?
protected override CollectionForm CreateCollectionForm()
{
_form = base.CreateCollectionForm();
_form.FormClosing += _form_FormClosing;
return _form;
}
Так что, когда пользователь нажимает кнопку OK он запускает событие _form_Closing. Это работает, однако, когда я делаю это:
private void _form_FormClosing(object sender, FormClosingEventArgs e)
{
e.Cancel = !Validate();
}
И Validate
возвращает false
(говоря форму, чтобы не закрывать) все существующие элементы коллекции будут удалены из UI
. Разумеется, предметы коллекции не должны исчезать с UI
?
Есть ли что-то еще, что мне нужно позвонить?
К сожалению, CollectionForm не предназначен для такого рода обмана. Фактически, он опустошает правый бокс, когда вы нажимаете ok, независимо от того, как (а также настройте свой объект с тем, что было в этом списке). Вы можете попытаться включить/отключить кнопку ok (которая является _form.AcceptButton) в зависимости от вашего контекста, но для этого вам нужно реагировать на изменение, а не ждать, пока пользователь нажмет кнопку ok. –
Ouch. Это грязно. Это потребует значений по умолчанию для элементов в коллекции, которые действительны, и в этом случае они никогда не будут действительны. О, хорошо, это дает мне возможность продолжить. – mxcolin
Я не думаю, что есть способ захватить нажатие кнопки OK. – mxcolin