gpt4 book ai didi

c# - 为什么 textedit 验证处理程序被调用两次?

转载 作者:太空宇宙 更新时间:2023-11-03 16:42:49 25 4
gpt4 key购买 nike

这是一个示例代码:

ButtonEdit be = new ButtonEdit()
{
DisplayFormatString = MyDisplayFrm,
MaskType = MaskType.RegEx,
Mask = "[-+]?([0-9]*[,.])?[0-9]+([eE][-+]?[0-9]+)?",
ValidateOnTextInput = false
};
Binding bindingValue = new Binding() { Source = PropItem, Path = new PropertyPath("Value"), Mode = BindingMode.TwoWay };
BindingOperations.SetBinding(be, ButtonEdit.EditValueProperty, bindingValue);
be.SetValue(Grid.ColumnProperty, 0);
be.Validate += be_Validate;

void be_Validate(object sender, ValidationEventArgs e)
{
if ((Convert.ToDouble(e.Value) <= MaxVal) && (Convert.ToDouble(e.Value) >= MinVal)) return;
MessageBoxResult mbr = MessageBox.Show("The value in not in the suggested range, do you want to continue?", "Min/Max Range validation", MessageBoxButton.YesNo);
if (mbr == MessageBoxResult.Yes)
{
return;
}
else
{
e.IsValid = false;
e.ErrorType = DevExpress.XtraEditors.DXErrorProvider.ErrorType.Warning;
e.ErrorContent = "Value is not in the suggested range. Please correct.";
}
}

当我将值更改为超出范围并更改焦点时,我会收到两次消息框;一种用于更改值,一种用于更改显示,因为编辑器将值( double )显示为适当的科学显示。

如何让 TextEdit(或在上面的示例中的 ButtonEdit)在更改显示时不检查验证?我的意思是一开始就不应该,对吧?因为 EditValue 属性没有改变,而只是显示(Text 属性)。

提前致谢:)

最佳答案

请查看这篇帮助文章 BaseEdit.InvalidValue event

据我所知,您需要处理 Validating 事件并在该事件中设置 e.Cancel 如果值不正确则为 true,然后在 InvalidValue 事件中您可以为无效条目提供视觉提示。

希望对你有帮助

关于c# - 为什么 textedit 验证处理程序被调用两次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6980208/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com