3

そこで、しばらく前から (少なくとも同僚が現れる前に) 古い Windows フォーム ユーティリティの問題を修正するように依頼されました。フォームには、データバインドされた numericUpDown コントロールがあります。問題は、上矢印または下矢印をクリックすると値が変更されて保存されますが、数値を入力して保存をクリックすると保存されないということでした。データバインディングに変更が見られなかったようだったので、WPFのバックグラウンドから来て、次の変更を推測しました

TaskDaysToComplete.DataBindings.Add("Value", taskTemplate, "DaysToComplete");

これに

TaskDaysToComplete.DataBindings.Add("Value", taskTemplate, "DaysToComplete", false, DataSourceUpdateMode.OnPropertyChanged);

私の問題を解決し、解決しました。数値を入力するか、コントロールの上下矢印を使用して「値」プロパティを設定できるようになりました。

私の質問はこれです、そもそも何が起こっていたのですか?デフォルトの DataSourceUpdateMode は OnValidation だったと思いますが、これはいつ発生し、上下の矢印を使用したときに問題がなかったのに、入力時に発生しなかったのはなぜですか。

ありがとう!

4

1 に答える 1

1

数値UD検証

検証はフォーカスを失ったときに行われるため、上/下キーを押すとテキストボックスがフォーカスを失い、検証ルーチンがトリガーされます。
テキストを編集するときに、別のコントロールをクリックしてコントロールのフォーカスを失うことができます。これにより、検証が行われます。
デフォルトが onValidate に設定されている理由は、値が変更されると、入力された各文字で検証が行われるためです。これは、パフォーマンスと正しい検証の両方にとって問題になる可能性があります。

于 2012-11-26T09:30:04.277 に答える