我正在对带有保存和取消按钮的对话框表单上的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;
问题是,如果用户在编辑器中键入错误值,则单击“取消”,显示验证错误,屏幕不会关闭。我已经尝试绑定取消按钮单击事件以尝试清除编辑器中的值,但它没有触发。
有没有人想出办法解决这个问题?
答案 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属性来避免表单关闭(如果有必要)。