1

状況: 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 を無効のままにし、魔法のリセットを行わないようにしたい。値のリセットを防ぐにはどうすればよいですか? または、私は何を間違えましたか?

ありがとう!

4

0 に答える 0