状況: TextBox と ComboBox を持つ AC# Windows Forms アプリケーション。AutoValidate は EnableAllowFocusChange に設定されています。
TextBox は、int として保存される "10 %" などのパーセンテージ値として表示されます。両方の入力コントロールはデータ バインドされており、TextBox は解析および書式設定の ConvertEventHandler と Validating CancelEventHandler を備えています。
「abc」などの無効な入力を入力してコントロールを離れる場合: My Validation が実行され、失敗します (e.Cancel = true、ErrorProvider ..)。そして私の解析は失敗します (e.Value は "abc" のままです)。
問題: ComboBox の値を変更してそのままにする (フォーカスを失う/検証を実行する) か、ValidateChildren を実行すると、フォーマット関数が最後の有効なパーセンテージ値で呼び出され、間違った入力が失われます。
Stacktrace:この問題は、ComboBox の ReportPropertyChanged によって引き起こされ、Binding.PushData、FormatObject、および OnFormat につながります -> 元の値でフォーマット関数を呼び出します。
TextBox を無効のままにし、魔法のリセットを行わないようにしたい。値のリセットを防ぐにはどうすればよいですか? または、私は何を間違えましたか?
ありがとう!