Не удается закрыть диалоговое окно при отображении ошибки DevExpress maskedit - PullRequest
0 голосов
/ 09 ноября 2011

Я делаю следующее для TextEdit, который находится в диалоговой форме с кнопкой сохранения и отмены.

_underlyingEditor.Properties.Mask.EditMask = @"\((\d{3})\)-(\d{3})-(\d{4})";
_underlyingEditor.Properties.Mask.MaskType = MaskType.RegEx;
_underlyingEditor.Properties.Mask.UseMaskAsDisplayFormat = true;
_underlyingEditor.Properties.AutoHeight = false;

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

Кто-нибудь нашел способ справиться с этим?

Ответы [ 2 ]

0 голосов
/ 10 ноября 2011

Диалог не может быть закрыт, если проверка не удалась, это стандартное поведение и не относится к элементам управления DevExpress.Однако вы можете обойти его, используя DXErrorProvider для отображения этих ошибок.Это позволяет закрывать форму, несмотря на неверные данные.Пожалуйста, обработайте событие Validating редактора, как показано ниже:

void textEdit1_Validating(object sender, System.ComponentModel.CancelEventArgs e) {
    if(e.Cancel) {
        dxErrorProvider1.SetError(textEdit1, "Error");
        e.Cancel = false;
    }
    else dxErrorProvider1.SetError(textEdit1, null);
}

Обратите внимание, что вы можете использовать свойство DXErrorProvider.HasErrors в событии FormClosing, чтобы избежать закрытия формы, если оно необходимо.

0 голосов
/ 10 ноября 2011

Обработайте событие FormClosing и установите для параметра e.Cancel значение False. Это должно помочь. Параметр e.CloseReason предоставляет информацию о причине закрытия. Вы можете проверить это, если это необходимо.

...