私はいつも苦労しています。私は多くの計算のためにDateTimePicker
の値を中継するアプリケーションを持っています。日付は通常このコントロールに入力され、ユーザーは1桁の日または月を先頭にゼロ(9/9/17または10/6/17)を付けずに入力し、コントロールが日付を完了します。これはValidating
、Validated
、Leave
、ValueChanged
などのイベントで発生したときDateTimePickerの値は1桁の数字を入力すると更新されません
はしかし、DateTimePicker.Value
は更新する前に、プレビュー値を反映しています。
たとえば、コントロールでは日付がDateTime.Today
(06/09/2017)に設定され、ユーザーは値をプレビュー月に先行ゼロ(5/09/2017)なしで入力します。この場合、予告されたイベントでは、DateTimePicker.Value
はまだ変更されていますが、06/09/2017になります。ユーザーが先行ゼロ(05/09/2017)で日付を入力すると、値がイベントで正しく更新されることを明確にすることが重要です。
値が正しく更新され、このイベントの後で値を検証すると(つまり、ユーザーがボタンをクリックすると)、更新された値が表示されます。しかし、これは必要なものではありません。
次の例では、正しい値に依存する別のコントロールが間違って更新されます。
private void nochesFormattedTextBox_Leave(object sender, EventArgs e)
{
fechaFinDateTimePicker.Value = fechaDateTimePicker.Value.AddDays(nochesFormattedTextBox.Text != "" ? int.Parse(nochesFormattedTextBox.Text) : 0);
}
助けが必要ですか?
実際には 'Validated'イベントも発生します。しかし、このソリューションは 'ValueChanged'イベントを使用していました。ありがとう! –