1

情况:带有 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 保持无效并且没有神奇的重置。我能做些什么来防止值重置?或者我做错了什么?

谢谢!

4

0 回答 0