情况:带有 TextBox 和 ComboBox 的 AC# Windows 窗体应用程序。AutoValidate 设置为 EnableAllowFocusChange。
TextBox 表示并显示为百分比值,例如“10 %”,它存储为 int。两个输入控件都是数据绑定的,TextBox 具有解析和格式化的 ConvertEventHandler 以及 Validating CancelEventHandler。
当输入像“abc”这样的无效输入并离开控件时:执行我的验证但失败(例如取消 = true,ErrorProvider ..)。我的解析失败(e.Value 保持“abc”)。
问题:当我现在更改 ComboBox 的值并将其保留(失去焦点/执行验证)或执行 ValidateChildren 时,我的格式函数会使用最后一个有效百分比值调用,并且错误的输入会丢失。
Stacktrace:问题是由 ComboBox 的 ReportPropertyChanged 触发的,并导致 Binding.PushData、FormatObject 和 OnFormat -> 使用原始值调用我的格式函数。
我希望我的 TextBox 保持无效并且没有神奇的重置。我能做些什么来防止值重置?或者我做错了什么?
谢谢!