当显示DevExpress maskedit错误时,无法关闭对话框

时间:2011-11-09 16:32:28

标签: c# .net editor devexpress

我正在对带有保存和取消按钮的对话框表单上的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 :(得分:0)

处理FormClosing事件并将e.Cancel参数设置为False。这应该有所帮助。 e.CloseReason参数提供有关关闭原因的信息。如果有必要,你可以检查一下。

答案 1 :(得分:0)

如果验证失败,则无法关闭对话框,这是标准行为,与DevExpress控件无关。但是,您可以使用DXErrorProvider来解决此问题,以显示这些错误。这样即使数据不正确,也可以关闭表单。请处理编辑器的验证事件,如下所示:

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

请注意,您可以使用FormClosing事件中的DXErrorProvider.HasErrors属性来避免表单关闭(如果有必要)。