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